2017-01-25 7 views
-4

複数のオブジェクトを含むオブジェクトを取得します。それらのオブジェクトは、値が数値である特定のキーnumberを持つことができます。 どうすればさらに何かの始まりかもしれこのキーnumber ...javascript:別のオブジェクトの特定のキーの値を追加する方法

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" 
    }, 
}; 
+2

何か試しましたか? –

+0

オブジェクトを繰り返し処理し、 'number'プロパティにアクセスして合計します。 – Li357

+0

各オブジェクトをループして、 'number'プロパティがあるかどうかを確認し、存在する場合は合計に追加してください。 Googleはあなたの友人です – qxz

答えて

0
var sum = 0; 

for (var prop in myObject) 
{ 
    sum += myObject[prop].number || 0; 
} 

を持っているすべてのオブジェクト「数」の値ができます....

+0

こんにちは、ありがとうございました。私はあなたが提案したものを試しましたが、成功できませんでした。私はまた、(item.hasOwnProperty( 'number'))しかし合計が0にとどまることをやろうとしました。 – user1859295

+0

私の質問を今編集しました。 – ymz

0

このArray.reduceの完璧な使用例です!ただし、配列の代わりにオブジェクトであるため、Object.keysを使用してアイテム名のリストを取得する必要があります。このリストはレデューサーループを駆動します。

// 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); 
関連する問題