2017-11-03 13 views
-1

外部APIによって供給されるオブジェクトの配列があります。たとえば、 [{prop:val1}、{prop:val2}、{prop:val3} .... ]javascript配列内のすべてのオブジェクトにプロパティを追加する

このオブジェクト(私のコード)は、オブジェクトのプロパティの名前が 'prop'の代わりに 'xyz'になると予想されるサードパーティのライブラリにフィードする必要があります。これを達成するために、アレイ

内のすべてのオブジェクトに「XYZ」プロパティを追加し、アレイ 2.オーバー 1.反復処理:

最も効率的な方法は基本的に両方の回避(メモリが賢明と速い)とは何ですか?

私は、 'prop'値を返すすべてのオブジェクトにxyzのゲッターを追加するという行に沿って考えていますが、それはループを保存しません。 この時点でプロトタイプレベル(Object.property)を追加することは悪い考えです。

編集:forEachやmapのようなjavascriptの配列をループするさまざまな方法を探しているわけではありません。私は非常に具体的な質問をしており、単に 'xyz'のプロパティプロキシを持つことが可能かどうかを調べることに興味があります。

+0

可能な複製(HTTPS://stackoverflow.com/questions/38922998/add-property-to-an-array-of-objects) –

+0

@LucaDeNardiすべての解決策が配列をループしてプロパティを追加しています。これはまさに私が避けたいものです。 – necromancer

+0

これが唯一の方法です。配列が_multiple_項目のリストであるという事実は、すべての項目を通して_loop_する必要があります –

答えて

0

アレイマップは、アレイを循環するために使用されます。

myArray.map(function(obj){ 
    obj.xyz = 'yourvalue'; 
    return obj; 
} 
+0

それはまだO(N)のソリューションを提供します。それはありませんか? – UchihaItachi

+0

'Array.prototype.map()'は、配列のすべての要素を変換し、それらの変換された値を新しく作成された配列に返すために使用されます。 – Andreas

0

Array.mapを使用すると、APIで受け取った配列から新しいものを作成できます。この例では

var newArray = oldArray.map(function(obj){ 
    return {newKey : obj.prop}; 
}); 

newKeyではなく 'prop'の、あなたが望む重要な特性となり、それが古い 'prop'値に割り当てられている

[オブジェクトの配列にプロパティを追加]の
+0

あなたは正しいです。私の答えを編集しました。 –

関連する問題