以下に示すオブジェクトの配列があります
Object {Results:Array[2]}
Results:Array[2]
[0-1]
0:Object
id=1
name: "Rick"
1:Object
id=2
name:'david'
このオブジェクトの配列の各要素に、Activeという名前のプロパティをもう1つ追加します。
最終結果は次のようになります。
Object {Results:Array[2]}
Results:Array[2]
[0-1]
0:Object
id=1
name: "Rick"
Active: "false"
1:Object
id=2
name:'david'
Active: "false"
誰かがこれを達成する方法を教えてください。
forEach
メソッドを使用して、配列内の各要素に対して提供された関数を1回実行できます。この提供された関数では、Active
プロパティを要素に追加できます。
Results.forEach(function (element) {
element.Active = "false";
});
またはmap
を使用します
Results.map(obj=> ({ ...obj, Active: 'false' }))
@adrianolskによるコメントを反映するように編集され、オリジナルを変更せず、代わりにそれぞれの新しいオブジェクトを返します。
私もこの問題に思いつき、それを解決しようとして、アプリを実行していたchromeタブをクラッシュさせ続けました。 オブジェクトのスプレッド演算子 が原因だったようです。
上記のadrianolskのコメントとsidonaldsonの回答から少し助けを借りて、 Object.assign() babelのスプレッド演算子の出力を使用しました。
this.options.map(option => {
// New properties to be added
const newPropsObj = {
newkey1:value1,
newkey2:value2
};
// Assign new properties and return
return Object.assign(option, newPropsObj);
});
Object.defineProperty(Results, "Active", {value : 'true',
writable : true,
enumerable : true,
configurable : true});