2017-05-10 8 views
2

私のアプリケーションのクリックイベントで、返されたのはhighlightsです(長さが異なるたびに)。だから、console.log(highlights)は生成します。javascriptオブジェクト内の特定のプロパティの合計値

enter image description here

私の目的は、オブジェクトの各機能のproperties.census2010_Pop2010に含まれる値の合計を返すことです。これまでのところ私は以下のコードを試しましたが、コンソールに何も返されません。任意の提案をいただければ幸いです。

total = Object.create(null); 

highlights.feature.properties.forEach(function (a) { 
    a.census2010_Pop2010.forEach(function (b) { 
     total = total + b.census2010_Pop2010; 
    }); 
}); 

console.log(total); 
+0

なぜ 'total'をオブジェクトとして初期化しますか?それを数字にしたくないですか? – trincot

+0

あなたはプロパティが配列であると言っています....それはオブジェクトです....あなたは配列全体で行うべきです.... – epascarello

+0

合計は数字でなければなりません –

答えて

2

highlightsは配列であり、それをループする必要があります。

var highlights = [ 
 
    {properties : { census2010_Pop2010: 10}}, 
 
    {properties : { census2010_Pop2010: 20}}, 
 
    {properties : { census2010_Pop2010: 30}} 
 
] 
 

 
var total = highlights.reduce(function(tot, record) { 
 
    return tot + record.properties.census2010_Pop2010; 
 
},0); 
 

 

 
console.log(total);

あなたがのforEachを使用する場合、それはこのようになります:

var highlights = [ 
 
    {properties : { census2010_Pop2010: 10}}, 
 
    {properties : { census2010_Pop2010: 20}}, 
 
    {properties : { census2010_Pop2010: 30}} 
 
] 
 

 
var total = 0; 
 
highlights.forEach(function(record) { 
 
    total += record.properties.census2010_Pop2010; 
 
}); 
 

 

 
console.log(total);

0

これは、の値を合計するreduceを使用することによって達成することができますcensus2010_Pop2010

const total = highlights.reduce((acc, val) => acc + val.properties.census2010_Pop2010, 0); 

注:私は簡潔にそれを維持するためにES6 arrow function を使用している、これは必要ではないが、mapfilterreduceのような方法で、より機能的なスタイルを採用した場合、より一般的になってきて。

1
total = 0; 

highlights.forEach(function(a) { 
    total += Number(a.Feature.properties.census2010_Pop2010); 
}) 
console.log(total); 

あなたは「ハイライト」配列の「機能」の各オブジェクトをループする必要があります。合計0で始まり、各フィーチャからcensus2010_Pop2010の値を徐々に追加します。

+0

ようこそスタックオーバーフロー!このコードスニペットが解決策になるかもしれませんが、[説明を含む](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。 – milo526

+0

ありがとうございますmilo526。私は説明を含めるために私の答えを更新しました –

関連する問題