控制台日志记录对象值
Console logging object values
作为我参加的训练营的一部分,我被要求创建一个在线购物车。
我在 addToCart 函数方面遇到了这样的问题,因为我一直设法控制台日志 [{itemName: item, itemPrice: 8}] 而不是“项目已添加到购物车。
我认为我的问题出在我的模板文字上。
目的是让函数接受一个项目,围绕它创建一个对象,应用其他属性,添加到购物车数组,控制台记录该项目已被添加(这就是我的问题所在)然后return购物车。
我尝试了多种替代方法,例如尝试通过点表示法访问值以及使用对象的键来访问值。还是没有快乐。
下面是我的代码:
function addToCart(item) {
// write your code here
var price = Math.floor(Math.random() * 100) + 1;
var obj = {itemName: item, itemPrice: price};
cart.push(obj);
console.log(`${item} has been added to your cart.`)
return cart;
}
我期望的是被解析到函数中的项目将记录到控制台,说明该项目已添加。我相信其余代码工作正常,因为它通过了本地测试。
我得到的错误是这样的:
错误:预期 [{itemName:'ice cream', itemPrice: 26}] 等于 'ice cream has been added to your cart.'
任何提示都会很有帮助。
您需要将购物车定义为全局变量。请检查以下代码片段。
cart = [];
(function() {
addToCart("Apple");
addToCart("Orange");
console.log(this.cart)
})();
function addToCart(item) {
var price = Math.floor(Math.random() * 100) + 1;
var obj = {itemName: item, itemPrice: price};
this.cart.push(obj);
console.log(`${item} has been added to your cart.`)
return cart;
}
看着您遇到的错误,我觉得 错误是由测试引发的 您是 运行。
该测试正在检查您的函数返回的值,而不是控制台中记录的内容。为了不再出现错误,您应该修复该测试。
假设您的测试使用 Jasmine,该测试将类似于:
const cart = addToCart(item);
expect( cart[0]['itemName'] ).toBe('ice cream')
我看了你的测试,
尝试关注
你的测试是(我希望我选对了):
it("returns a message indicating that the item has been added", function() {
expect(addToCart("ice cream")).toEqual("ice cream has been added to your cart.");
expect(addToCart("juice")).toEqual("juice has been added to your cart.");
});
将您的代码更改为:
function addToCart(item) {
// write your code here
var price = Math.floor(Math.random() * 100) + 1;
var obj = {itemName: item, itemPrice: price};
cart.push(obj);
console.log(`${item} has been added to your cart.`)
return `${item} has been added to your cart.`;
//OR
//return `${obj.itemName} has been added to your cart.`;
}
当您将测试中来自 "addToCart" 的 returned 值与 .toEqual 中的字符串进行比较时,因此您应该 return 来自函数的特定格式化字符串。
因此,而不是 returning cart,您应该 return 您想要的 特定字符串 检查。
作为我参加的训练营的一部分,我被要求创建一个在线购物车。 我在 addToCart 函数方面遇到了这样的问题,因为我一直设法控制台日志 [{itemName: item, itemPrice: 8}] 而不是“项目已添加到购物车。
我认为我的问题出在我的模板文字上。
目的是让函数接受一个项目,围绕它创建一个对象,应用其他属性,添加到购物车数组,控制台记录该项目已被添加(这就是我的问题所在)然后return购物车。
我尝试了多种替代方法,例如尝试通过点表示法访问值以及使用对象的键来访问值。还是没有快乐。
下面是我的代码:
function addToCart(item) {
// write your code here
var price = Math.floor(Math.random() * 100) + 1;
var obj = {itemName: item, itemPrice: price};
cart.push(obj);
console.log(`${item} has been added to your cart.`)
return cart;
}
我期望的是被解析到函数中的项目将记录到控制台,说明该项目已添加。我相信其余代码工作正常,因为它通过了本地测试。
我得到的错误是这样的:
错误:预期 [{itemName:'ice cream', itemPrice: 26}] 等于 'ice cream has been added to your cart.'
任何提示都会很有帮助。
您需要将购物车定义为全局变量。请检查以下代码片段。
cart = [];
(function() {
addToCart("Apple");
addToCart("Orange");
console.log(this.cart)
})();
function addToCart(item) {
var price = Math.floor(Math.random() * 100) + 1;
var obj = {itemName: item, itemPrice: price};
this.cart.push(obj);
console.log(`${item} has been added to your cart.`)
return cart;
}
看着您遇到的错误,我觉得 错误是由测试引发的 您是 运行。
该测试正在检查您的函数返回的值,而不是控制台中记录的内容。为了不再出现错误,您应该修复该测试。
假设您的测试使用 Jasmine,该测试将类似于:
const cart = addToCart(item);
expect( cart[0]['itemName'] ).toBe('ice cream')
我看了你的测试,
尝试关注
你的测试是(我希望我选对了):
it("returns a message indicating that the item has been added", function() {
expect(addToCart("ice cream")).toEqual("ice cream has been added to your cart.");
expect(addToCart("juice")).toEqual("juice has been added to your cart.");
});
将您的代码更改为:
function addToCart(item) {
// write your code here
var price = Math.floor(Math.random() * 100) + 1;
var obj = {itemName: item, itemPrice: price};
cart.push(obj);
console.log(`${item} has been added to your cart.`)
return `${item} has been added to your cart.`;
//OR
//return `${obj.itemName} has been added to your cart.`;
}
当您将测试中来自 "addToCart" 的 returned 值与 .toEqual 中的字符串进行比较时,因此您应该 return 来自函数的特定格式化字符串。
因此,而不是 returning cart,您应该 return 您想要的 特定字符串 检查。