javascript对象中特定属性的总和值

时间:2017-05-10 13:35:40

标签: javascript foreach

在我的应用程序中的click事件中,我返回highlights - 一系列功能(每次都有不同的长度)。所以console.log(highlights)会产生:

enter image description here

我的目标是返回对象中每个要素的properties.census2010_Pop2010中包含的值的总和。到目前为止,我已经尝试了下面的代码,但控制台中没有返回任何内容。任何建议,将不胜感激。

total = Object.create(null);

highlights.feature.properties.forEach(function (a) {
    a.census2010_Pop2010.forEach(function (b) {
        total = total + b.census2010_Pop2010;
    });
});

console.log(total);

3 个答案:

答案 0 :(得分:6)

highlights是一个数组,你应该循环遍历它。



var highlights = [
  {properties : { census2010_Pop2010: 10}},
  {properties : { census2010_Pop2010: 20}},
  {properties : { census2010_Pop2010: 30}}
]

var total = highlights.reduce( function(tot, record) {
    return tot + record.properties.census2010_Pop2010;
},0);


console.log(total);




如果您想使用forEach,它将是这样的:



var highlights = [
  {properties : { census2010_Pop2010: 10}},
  {properties : { census2010_Pop2010: 20}},
  {properties : { census2010_Pop2010: 30}}
]

var total = 0;
highlights.forEach( function(record) {
    total += record.properties.census2010_Pop2010;
});


console.log(total);




答案 1 :(得分:2)

total = 0;

highlights.forEach(function(a) {
    total += Number(a.Feature.properties.census2010_Pop2010);
})
console.log(total);

你需要遍历每个"功能" "中的对象突出显示"阵列。首先从总计0开始,然后逐步添加每个要素的census2010_Pop2010值。

答案 2 :(得分:1)

这可以通过使用reduce总计census2010_Pop2010

的值来实现
const total = highlights.reduce((acc, val) => acc + val.properties.census2010_Pop2010, 0);

注意:我使用了ES6 arrow function  为了保持简洁,这不是必要的,但在使用mapfilterreduce等方法采用更具功能性的风格时变得越来越常见。