【发布时间】:2018-02-21 19:15:47
【问题描述】:
我刚刚完成了代码学院的 JS 介绍,所以我对此有点陌生。 请查看购物车挑战的以下 2 段代码。 第一个是我在网上找到的正确代码,其中它扫描一个已经定义的数组,然后在输入一条信息(在本例中为“item”)时输出另一条信息(“price”)收到。
这是“正确”的解决方案:
// Declare Array
var shoppingCart = [];
// Declare function addToCart
addToCart = function(name,price) {
this.name = name;
this.price = price;
shoppingCart.push(this.name,this.price);
};
function priceCheck(itemName) {
var i = 0;
for(i; i <= shoppingCart.length; i++) {
if(itemName === shoppingCart[i]) {
console.log(shoppingCart[i += 1]);
break;
}
else {console.log("the searched item is not in the shopping cart");}
}
}
如您所见,此人使用了 .this。
在我的代码中,我只是添加了一个对象(如指示)。 我的逻辑完全不正确,还是我只需要进行一些修复?
我的代码:
shoppingCart = [];
function addToCart(itemName, itemPrice){
const shiny = {
name: itemName,
price: itemPrice
};
shoppingCart.push(shiny);
console.log(shoppingCart);
}
function priceCheck(itemName){
for(i=0;i<=shoppingCart.length; i++){
if(itemName===shoppingCart[i]){
return itemPrice;
} else{
console.log('item isnt in cart');
}}}
addToCart('apple',20);
console.log(shoppingCart);
priceCheck('apple');
它工作正常,直到达到 priceCheck('apple'); - 那么我似乎在数组中找不到“苹果”。
我试图了解是否需要使用 (.this) 以及是否可以按照我写的方式进行操作。
PS - 对不起,如果它一团糟,我有点难以解释我试图理解的内容:) PSS - 我不只是想解决挑战,而是真正培养“解决问题的编码思维方式”。
谢谢!
【问题讨论】:
-
itemPrice 是在哪里定义的?
标签: javascript arrays syntax logic this