2017-11-30 11 views
2

.reduce()関数がどのように機能しているかを理解しようとしています。 だから、私たちは購入のアレイを持っています。各購入はオブジェクトです。.reduce()関数を使用して要素にアクセスする

const purchases = [{"owner":"Barry","price":103}, 
{"owner":"Bob","price":75}, 
{"owner":"Bob","price":73},{"owner":"Barry","price":57}, 
{"owner":"Barry","price":128}, 
{"owner":"Bob","price":119},{"owner":"Barry","price":133}, 
{"owner":"Barry","price":27}, 
{"owner":"Barry","price":138},{"owner":"Bob","price":68}, 
{"owner":"Bob","price":50}, 
{"owner":"Barry","price":9},{"owner":"Bob","price":123}, 
{"owner":"Bob","price":135}, 
{"owner":"Barry","price":30},{"owner":"Barry","price":129}, 
{"owner":"Barry","price":38}, 
{"owner":"Bob","price":133},{"owner":"Barry","price":109}, 
{"owner":"Bob","price":115}] 

私は.reduce()関数を使用してボブのためのすべての購入を蓄積しようとしています。私のコードは以下の通りです:

let bobsTotal = purchases.reduce(el => { 
    if (el["owner"] === "Barry") {return el["price"]} 
}) 

「価格」プロパティへのアクセス方法はわかりません。

答えて

4

ときArray.prototype.reduce(function, accumulator):あなたは、本質的にaccumulatorを更新するarrayに各objectfunctionを反復しています。

ここで、functionは、(accumulator, object, index, array) => (accumulator)の形式をとります。

詳細はMozilla documentation referenceをご覧ください。

具体的な例については、以下のコードを参照してください。ボブのための

// Purchases. 
 
const purchases = [ 
 
    {"owner":"Barry","price":103}, 
 
    {"owner":"Bob","price":75}, 
 
    {"owner":"Bob","price":73}, 
 
    {"owner":"Barry","price":57}, 
 
    {"owner":"Barry","price":128}, 
 
    {"owner":"Bob","price":119}, 
 
    {"owner":"Barry","price":133}, 
 
    {"owner":"Barry","price":27}, 
 
    {"owner":"Barry","price":138}, 
 
    {"owner":"Bob","price":68}, 
 
    {"owner":"Bob","price":50}, 
 
    {"owner":"Barry","price":9}, 
 
    {"owner":"Bob","price":123}, 
 
    {"owner":"Bob","price":135}, 
 
    {"owner":"Barry","price":30}, 
 
    {"owner":"Barry","price":129}, 
 
    {"owner":"Barry","price":38}, 
 
    {"owner":"Bob","price":133}, 
 
    {"owner":"Barry","price":109}, 
 
    {"owner":"Bob","price":115} 
 
] 
 

 
// Total Bob. 
 
const totalBob = purchases.reduce((total, purchase) => {  
 
    if (purchase.owner == 'Bob') total += purchase.price // Owner == Bob. 
 
    return total  
 
}, 0) 
 

 
// Log. 
 
console.log(totalBob)

+2

*購入* - > 'リターン合計+ purchase.owner === "ボブ"? purchase.price:0; '... –

+1

アハハ私の悪い。私は全体の質問を読まなかった。ボブの合計を返すようにコードを修正しました。ありがとう! –

関連する問題