2017-06-28 4 views
0

こんにちは、私はオブジェクトの値を別のオブジェクトに戻そうとしています。 だから基本的に私がやっているこのようなオブジェクトの上にマッピングです:マップ値をオブジェクトに返す方法[]コンマで区切った

series:this.state.summaryData3[0].summary.population.gender.values.map((value) =>{ 
return [value] 
}) 

私は、出力は次のようになりたい:

series: [54,46] 

どのように私はこの問題を解決することができますか?

+2

'.map()'は配列を返しますので、 'return [value]'の代わりに 'return value'だけを正しくしたいですか?そのままでは、配列の配列で終わります。 – Pointy

+0

単一の配列を返す理由はありません。値を返すだけで配列になります。 – Icepickle

+1

配列をコピーしたいだけなら '.slice()'や 'Array.from(...)'を使います。 – Bergi

答えて

1

シャローコピー配列を作成するには、.slice()を使用することができます。

series: this.state.summaryData3[0].summary.population.gender.values.slice() 

あなたがコピーを作成するように、アレイ内の各値を変更したい場合は、あなたが.map()を使用して返すことができますコールバックからの新しい値(配列ではない)。 .map()関数は新しい配列に返されたすべての個々の値を照合し、その新しい配列を返します:

series: this.state.summaryData3[0].summary.population.gender.values.map(function(item){ 
    // some modification of the original value 
    return item + 1; 
}); 

注意を、あなただけの同じ値を返している場合は.map()を使用する理由はありません。元の値だけが必要な場合は、.slice()を使用してコピーを作成してください。結果として配列の配列を必要としない限り、配列を返さないでください。


そして、あなたが必要とするすべての既存のアレイ自体への参照であれば、あなたもコピーを作成する必要はありません。

series: this.state.summaryData3[0].summary.population.gender.values 

だから、あなたは、3つの異なるオプションがありますここではあなたの特定の要件に応じて。

関連する問題