簡體   English   中英

數組中對象的總和

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM