Saya memiliki array objek seperti yang ditunjukkan di bawah ini
Object {Results:Array[2]}
Results:Array[2]
[0-1]
0:Object
id=1
name: "Rick"
1:Object
id=2
name:'david'
Saya ingin menambahkan satu properti lagi bernama Active ke setiap elemen dari array Objects ini.
Hasil akhirnya harus sebagai berikut.
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"
Adakah yang bisa memberi tahu saya bagaimana mencapai ini.
javascript
arrays
object
underscore.js
Patrick
sumber
sumber
Jawaban:
Anda dapat menggunakan
forEach
metode ini untuk menjalankan fungsi yang disediakan satu kali untuk setiap elemen dalam larik. Dalam fungsi yang disediakan ini Anda dapat menambahkanActive
properti ke elemen.Results.forEach(function (element) { element.Active = "false"; });
sumber
atau gunakan
map
Results.map(obj=> ({ ...obj, Active: 'false' }))
Diedit untuk mencerminkan komentar oleh @adrianolsk agar tidak mengubah aslinya dan malah mengembalikan objek baru untuk masing-masing.
Baca spesifikasinya
sumber
Results.map(obj=> ({ ...obj, Active : 'false' }))
Object.defineProperty(Results, "Active", {value : 'true', writable : true, enumerable : true, configurable : true});
sumber
Saya juga mengalami masalah ini, dan saat mencoba mengatasinya, saya terus merusak tab chrome yang menjalankan aplikasi saya. Sepertinya operator penyebaran objek adalah pelakunya.
Dengan sedikit bantuan dari komentar adrianolsk dan jawaban sidonaldson di atas, saya menggunakan Object.assign () output dari operator spread dari babel, seperti ini:
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); });
sumber
Ini melewati objek sebagai struktur nilai kunci. Kemudian itu akan menambahkan properti baru bernama 'Aktif' dan nilai sampel untuk properti ini ('Aktif) ke setiap objek di dalam objek ini. kode ini dapat diterapkan untuk larik objek dan objek objek.
Object.keys(Results).forEach(function (key){ Object.defineProperty(Results[key], "Active", { value: "the appropriate value"}); });
sumber
Dengan ES6 Anda cukup melakukan:
for(const element of Results) { element.Active = "false"; }
sumber