【问题标题】:javascript :how to make an addition of value of specific key of different objectjavascript:如何添加不同对象的特定键的值
【发布时间】:2017-01-25 21:58:18
【问题描述】:

取一个对象,包含几个对象。这些对象可以有一个名为number 的特定键,其值是一个数字。 如何添加具有此键 number 的对象的所有“数字”值...

var myObject = {
    item1 = {
        name: "someName",
        color: "someColor2", 
        number: intValue
     },
     item2 = {
        name: "someName2",
        color: "someColor2"
     },
     item3 = {
        name: "someName3",
        color: "someColor3", 
        number: intValue
     },
     item4 = {
        name: "someName4",
        color: "someColor4" 
     },
};

【问题讨论】:

  • 你有没有尝试过?
  • 遍历对象并访问它们的number 属性并对它们求和。
  • 只需遍历每个对象,检查它是否具有number 属性,如果有,将其添加到总和中。 Google 是您的朋友
  • 请先尝试谷歌这个问题。我用谷歌搜索“遍历包含其他对象的 javascript 对象”并得到this 作为第一个结果
  • 您显示的代码不是有效的 JavaScript。请edit您的回答提供您实际使用的代码。

标签: javascript object operation


【解决方案1】:

这是Array.reduce 的完美用例!但是,由于您的输入是 object 而不是数组,因此我们需要使用 Object.keys 来获取项目名称列表,然后该列表将驱动 reducer 循环。

// your object def wasn't valid, so I made my own
var myObject = {
    item1: { name: 'item one',   color: 'red',    number: 1 },
    item2: { name: 'item two',   color: 'orange', number: 2 },
    item3: { name: 'item three', color: 'yellow', number: 3 },
    item4: { name: 'item four',  color: 'green',  number: 4 },
    item5: { name: 'item five',  color: 'blue',   number: 5 },
    item6: { name: 'item six',   color: 'indigo', number: 6 },
    item7: { name: 'item seven', color: 'violet', number: 7 }
};

var total = Object.keys(myObject) //=> ['item1', 'item2', 'item3', 'item4', ...]
.reduce(function(sum, itemName) {
    return sum += myObject[itemName].number;
}, 0);

【讨论】:

    【解决方案2】:
    var sum = 0;
    
    for (var prop in myObject)
    {
       sum += myObject[prop].number || 0;
    }
    

    这可能是某事....

    的开始

    【讨论】:

    • 您好,感谢您的回答。我尝试了您的建议,但未能成功。我也尝试过 if (item.hasOwnProperty('number')) 但总和保持为 0。
    猜你喜欢
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多