'products': [{ // List of productFieldObjects.
'name': 'Triblend Android T-Shirt',
'item_id': '12345',
'item_price': '15.00',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Black',
'quantity': 1,
'something' : 'anc',
'something2' : 'xyz',
'something3' : 'yyy'
},
{
'name': 'Triblend Android T-Shirt',
'item_id': '12345',
'item_price': '15.00',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Black',
'quantity': 1,
'something' : 'anc',
'something2' : 'xyz',
'something3' : 'yyy'
},
{
'name': 'Triblend Android T-Shirt',
'item_id': '12345',
'item_price': '15.00',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Black',
'quantity': 1,
'something' : 'anc',
'something2' : 'xyz',
'something3' : 'yyy'
}
必须过滤掉以下数据。
'products': [{
'name': 'Triblend Android T-Shirt',
'id': '12345',
'price': '45.00',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Black'
'quantity': 3
}]
从数组中过滤数据并返回单个数组对象(如果它与ID匹配)。如果有3个项目数量和价格也应该添加
当前代码
var filter = products.filter(function(items){
if(items.id == products.id){
return items;
}
})
我如何能够提前做好这一点,并提前感谢
答案 0 :(得分:2)
下面的condense()
function
遍历其array
中的params
到products
组id
并更新quantity
并相应地price
值,直到最终array
的{{1}}缩写为products
。
有关详细信息,请参阅Object.values()
,Array.prototype.reduce()
,destructuring assignment
和parseFloat()
。
returned
答案 1 :(得分:0)
您可以将array#reduce
与对象解构一起使用,仅选择所需的键,使用所有提取的值创建id为关键字对象和对象作为值,对于相同的键添加数量。然后使用Object.values()
从该对象中提取所有值。
var data = {'products': [{ 'name': 'Triblend Android T-Shirt', 'item_id': '12345', 'item_price': '15.00', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Black', 'quantity': 1,'something' : 'anc','something2' : 'xyz','something3' : 'yyy' }, { 'name': 'Triblend Android T-Shirt', 'item_id': '12345', 'item_price':'15.00', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Black', 'quantity': 1,'something' : 'anc','something2' : 'xyz','something3' : 'yyy' }, { 'name': 'Triblend Android T-Shirt', 'item_id': '12345', 'item_price': '15.00', 'brand': 'Google', 'category': 'Apparel', 'variant': 'Black', 'quantity': 1,'something' : 'anc','something2' : 'xyz','something3' : 'yyy' } ]},
result = Object.values(data.products.reduce((r,{name,item_id: id,item_price: price,brand = '',category = '', variant = '', quantity}) => {
r[id] = r[id] || {name,id,brand,category,variant, price: 0, quantity: 0};
r[id].price += +price;
r[id].quantity += quantity;
return r;
},{}));
console.log(result);