2016-10-26 7 views
0

誰かにオブジェクトのプロパティを乗算する方法を教えてください。私は、不動産価格の数を乗じた、このオブジェクトが必要と一緒にオブジェクトのプロパティを掛ける

var menu = [ 
     { 
      "id": 5, 
      "price": 13, 
      "count": 2 
     }, 
     { 
      "id": 8, 
      "price": 7, 
      "count": 3 
     }, 
     { 
      "id": 9, 
      "price": 17, 
      "count": 1 
     } 
    ] 

var sum = 0; 
for (var key in menu) { 
    for (var key1 in menu[key]) { 
     //console.log(key1); 
     if (key1 == 'price'){ 
      price += menu[key][key1]; 
     } 

    } 

} 

を置くが、私はどのように乗算する数えるプロパティ

+0

を私たちにあなたがしようとしている何かを示して? – kukkuz

+1

少なくとも期待される結果を示してください。 –

+0

すべての 'price * count'の合計が必要ですか? – kukkuz

答えて

-2

あなたは合計あなたがArray.prototype.reduceArray.prototype.mapを使用することができます

var menu = [ 
 
    { 
 
    "id": 5, "price": 13, "count": 2 }, { 
 
    "id": 8, "price": 7, "count": 3 }, { "id": 9, "price": 17, "count": 1 } ]; 
 
    var sum = 0, item; 
 
    for(item in menu) 
 
    { 
 
     sum += menu[item].price * menu[item].count; 
 
    } 
 
    console.log(sum);

+0

はい、私の仕事、ありがとうございます –

+0

@ジョンドーこれはあなたが欲しいですか? – Mahi

-1

あなたは、おそらくこのような何かをしたい見当がつかない:

{ 
    "id": 5, 
    "price": 13, 
    "count": 3, 
    "value": function() {return this.price * this.count;} 
} 

ますオブジェクトを作成してプロトタイプを追加する(メモリと時間を節約する)か、その都度そのように構築することで、これを行うことができます。

そうしないと、あなただけの行うことができます。

var obj = { ... } // your stuff 
alert(obj.price * obj.count) 
0

を計算するとします。

.map

によって各項目の 価格を乗算しますコールバック関数を取り、このように見える新しい arrayを作成します。

[26,21,17]

.reduceは、その結果得られる乗算された価格合計アレイの作成新しい反復処理を行うだけでなく、コールバックを取ります

64

let menu = [ 
 
    { 
 
    "id": 5, 
 
    "price": 13, 
 
    "count": 2 
 
    }, 
 
    { 
 
    "id": 8, 
 
    "price": 7, 
 
    "count": 3 
 
    }, 
 
    { 
 
    "id": 9, 
 
    "price": 17, 
 
    "count": 1 
 
    } 
 
] 
 

 

 
let sum = menu.map(p => p.price * p.count).reduce((a,b) => a + b) 
 

 
console.log("Total:",sum)