2017-05-28 44 views
0

我正在购物车功能练习。该功能需要在cart中添加一个item,并打印出item name已添加到您的购物车,或者您的购物车为空如果没有添加项目。javascript通过添加/循环键和值操作对象

我还需要创建一个对象来存储的Math.random *生成的项目价格100

两个项目名称和项目价格应存放在一个对象。该对象将被传递给用户查看购物车的下一个功能。

这是我的尝试,但它一次转动多个项目。

function addToCart(item) { 
    item = ["pizza", "salt", "apples"] 
    var price = [] 
    var priceRandom = Math.random() * 100 
    var priceItem = Math.floor(priceRandom) 

    for (var i =0; i<item.length; i++){ 
    cart.push(item[i]) 
    console.log(`${item[i]}has been added to your cart. `) 
} 

    var cartList = { 
    item[i], priceItem[i] 
    } 

    return cartList 

} 
+0

'Object'的原型对这个有趣的方法:'Object.keys(OBJ)' 因此,遍历可以执行的键/属性: 'var keys = Object.keys(obj); for(var k of keys){}' – Vivick

回答

1

我不是打算做你的整个运动,也不应该一

但在这里,你有一个包含两个数组(名称和价格)

var items = { 
    names: ["pizza", "salt", "apples"], 
    price: [] 

} 

对象'items`而与forEach()我们将循环通过items对象中的所有names并给它们一个价格。

items.names.forEach(function() { 
    var priceRandom = Math.random() * 100 
    var priceItem = Math.floor(priceRandom) 
    items.price.push(priceItem); 
}); 
+0

谢谢。将项目设置为对象有助于重构代码。 – huisleona

0

我想这是你想要的

function shopingcart(items){ 
 
let cart =[]; 
 
items.forEach((v,i)=> {cart[i] = {food: v,price: Math.floor(Math.random(i)*100)}}); 
 
return cart 
 
} 
 

 
var items = ['pizza', 'salt', 'apples'] 
 
var cart = shopingcart(items);  
 

 
console.log(cart); 
 
// iterate by key value 
 
cart.forEach((item)=>{ 
 
console.log(item.price) 
 
console.log(item.food) 
 
})