2016-09-26 19 views
1

を返していることは、次のとおりです。アレイは、私はのようなコードを持っているNAN

var temp=[{"name":"Agency","y":32,"drilldown":{"name":"Agency","categories":["APPS & SI","ERS"],"data":[24,8]}},{"name":"ER","y":60,"drilldown":{"name":"ER","categories":["APPS & SI","ERS"],"data":[7,53]}},{"name":"Direct","y":60,"drilldown":{"name":"Direct","categories":["APPS & SI","ERS"],"data":[31,29]}}]; 

var reduced=temp.reduce(function (a,b) { 
     return a.y + b.y; 
    }); 
console.log(reduced) // returns NAN 
+1

を減らす - あなたは、typeof演算 'A'意志第1の和を返したら、数値でなければなりません.yyプロパティはありません。 –

+0

check関数のコールバックパラメータを減らしてください。 – passion

答えて

14

あなたは開始値とアドオン配列から一つの値だけを使用することができます。

var temp=[{"name":"Agency","y":32,"drilldown":{"name":"Agency","categories":["APPS & SI","ERS"],"data":[24,8]}},{"name":"ER","y":60,"drilldown":{"name":"ER","categories":["APPS & SI","ERS"],"data":[7,53]}},{"name":"Direct","y":60,"drilldown":{"name":"Direct","categories":["APPS & SI","ERS"],"data":[31,29]}}]; 
 

 
var reduced = temp.reduce(function (r, a) { 
 
     return r + a.y; 
 
     // ^^^ use the last result without property 
 
    }, 0); 
 
// ^^^ add a start value 
 
console.log(reduced) // r

+0

1つの線形定数は、削減された= temp.length? temp.reduce((r、a)=> {return r + a.y;}、0):0; – webmaster

+0

@webmasterの場合、空の配列に対してはreduceの開始値をとることができます: 'const reduced = temp.reduce((r、{a})=> r + a、0);' –

2

短いソリューション:問題を説明するために、整数のコレクションにコレクションをマッピングし、そしてそれを

var temp=[{"name":"Agency","y":32,"drilldown":{"name":"Agency","categories":["APPS & SI","ERS"],"data":[24,8]}},{"name":"ER","y":60,"drilldown":{"name":"ER","categories":["APPS & SI","ERS"],"data":[7,53]}},{"name":"Direct","y":60,"drilldown":{"name":"Direct","categories":["APPS & SI","ERS"],"data":[31,29]}}]; 

var reduced = temp 
       .map(function(obj) { return obj.y; }) 
       .reduce(function(a, b) { return a + b; }); 

console.log(reduced); 
関連する問題