[英]Sum values of objects in array
我想創建一個包含多個對象的數組的總和。
下面是一個例子: var array = [{"adults":2,"children":3},{"adults":2,"children":1}];
如何將成人的總和和兒童的總和返回到每個的新變量中?
謝謝,C。
使用
Array.prototype.reduce()
,reduce() 方法對累加器和數組的每個值(從左到右)應用一個函數以將其減少為單個值。
var array = [{ "adults": 2, "children": 3 }, { "adults": 2, "children": 1 }]; var val = array.reduce(function(previousValue, currentValue) { return { adults: previousValue.adults + currentValue.adults, children: previousValue.children + currentValue.children } }); console.log(val);
array = [{"adults":2,"children":3},{"adults":2,"children":1}];
var totalChild = this.array.reduce((accum,item) => accum + item.children, 0)
console.log(totalChild) //output 4
你可以為這個任務編寫一個函數,它讓數組迭代一個屬性,應該添加哪個值。
該函數的關鍵特性是Array#reduce方法和一個返回實際計數值和實際屬性值的屬性。
function count(array, key) { return array.reduce(function (r, a) { return r + a[key]; }, 0); } var array = [{ "adults": 2, "children": 3 }, { "adults": 2, "children": 2 }], adults = count(array, 'adults'), children = count(array, 'children'); document.write('Adults: ' + adults + '<br>'); document.write('Children: ' + children + '<br>');
看到還沒有人發布這個……這是一個很好的速記方法:
.reduce((acc, curr) => acc + curr.property, 0)
例子:
arr = [{x:1, y:-1}, {x:2, y:-2}, {x:3, y:-3}];
x_sum = arr.reduce((acc, curr) => acc + curr.x, 0); // 6
y_sum = arr.reduce((acc, curr) => acc + curr.y, 0); // -6
var array = [{"adults":2,"children":3},{"adults":2,"children":1}];
var sumProps = prop => (sum, obj) => sum += obj[prop];
var adultsCount = array.reduce( sumProps('adults'));
var childrenCount = array.reduce( sumProps('children'));
我們不是為您編寫代碼,但我想您應該嘗試:
var val = array.reduce(function (sum, tuple) {
return { adults: sum.adults + tuple.adults,
children: sum.children + tuple.children };
});
要將每個本質的總和轉化為單獨的變量:
var array = [{"adults":2,"children":3},{"adults":2,"children":1}];
var adults_sum = 0, children_sum = 0;
array.forEach(function(obj){
adults_sum += obj["adults"];
children_sum += obj["children"];
});
console.log(adults_sum, children_sum); // 4 4
也許它可以幫助你,這也不需要使用reduce func。
var sumAdult=0;
var sumChildren=0;
var array = [{
"adult": 2,
"children": 3
}, {
"adult": 2,
"children": 1
}];
function x(a,b){
return a+b;
}
for (y in array){
sumAdult=x(0, array[y].adult);
console.log( "adult :" + sumAdult);
sumChildren=x(0, array[y].children);
console.log( "children :" + sumChildren);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.