2017-03-06 42 views
0

这是一个购物车。如何遍历对象文字数组以找到匹配的属性?

我想检索regularListings中的物品的价格,并使用它们来计算我的购物车的总数。

购物车'michael'中的第一项是顾客的名字。

这怎么能在JavaScript中完成?

'use strict' 

const listing = 
    (name, price) => ({ 
    name, 
    price 
    }) 

const cart = 
    (customer, ...items) => ({ 
    customer, 
    items 
    }) 

const listedPrice = 
    listing => 
    name => 
     name === listing.name 
     ? listing.price 
     : 0 

const regularListings = [ 
    listing('detergent', 10), 
    listing('hennessey', 100), 
    listing('carlo rozzi', 20), 
    listing('coffee', 5), 
    listing('cookies', 6), 
    listing('mountain dew', 2) 
] 

const carts = [ 
    cart(
    'michael', 
    'coffee', 
    'hennessey', 
    'coffee', 
    'hennessey', 
    'coffee', 
    'hennessey' 
) 
] 
+1

你会碰到一个问题:对象的属性有没有保证的顺序。您的购物车应该可能是一个数组,而不是一个对象。 – Pointy

回答

3

您可以减少regularListings和计算总量

const regularListings = [ 
    listing('detergent', 10), 
    listing('hennessey', 100), 
    listing('carlo rozzi', 20), 
    listing('coffee', 5), 
    listing('cookies', 6), 
    listing('mountain dew', 2) 
] 

const total = regularListings.reduce((state, item) => state + item, 0); 
+2

如果你想使用ES6箭头表示法:'regularListings.reduce((total,item)=> total + item.price,0);' – seth10

+0

另外,0在那里,因为那是'total'值开始,如果不明确。 – seth10

+0

@setht谢谢你的建议 – Burimi