我正在尝试为我想要的输出中的小提琴添加唯一值
{ category: 'fos', value: 70 },
{ category: 'nyedva', value: 30 }
我能够获得数组中的唯一值,不知道在哪里添加值
var catalog={
products : [
{ category: 'fos', value: 10 },
{ category: 'fos', value: 20 },
{ category: 'nyedva', value: 30 },
{ category: 'fos', value: 40 },
]
};
var categories = [];
var sum=[];
$.each(catalog.products, function(index, value) {
if ($.inArray(value.category, categories)==-1) {
categories.push(value.category);
}
else {
console.log("CAt Val:" +value.category);
var total=value.value;
sum.push(total);
}
});
console.log(categories);
console.log(sum);
答案 0 :(得分:0)
您可以使用forEach()
循环返回所需的结果。
var catalog = {"products":[{"category":"fos","value":10},{"category":"fos","value":20},{"category":"nyedva","value":30},{"category":"fos","value":40}]}
var result = [];
catalog.products.forEach(function(e) {
var c = e.category;
!this[c] ? (this[c] = e, result.push(this[c])) : this[c].value += e.value
}, {})
console.log(result)

答案 1 :(得分:0)
您可以在不需要jQuery的情况下执行此操作:
var res = catalog.products.reduce(function(res, product) {
if (!res.hasOwnProperty(product.category)) {
res[product.category] = 0;
}
res[product.category] += product.value;
return res;
}, {});
console.log(res);
这会产生:
{ fos: 70, nyedva: 30 }
如果你想把它作为一个类别数组:
console.log(Object.keys(res).map(function(key) { return { category: key, value: res[key] }; }));
这会给你:
[ { category: 'fos', value: 70 },
{ category: 'nyedva', value: 30 } ]