find dan sum dua field objects in javascript reduce
Halo dan terima kasih telah memeriksa pertanyaan saya.
Saya memiliki objek array yang berisi banyak entri untuk orang yang sama sesuai dengan tanggal yang berbeda. Saya perlu menjumlahkan dua variabel nilai untuk setiap orang.
Saya memiliki objek array yang berisi banyak entri untuk orang yang sama sesuai dengan tanggal yang berbeda. Saya perlu menjumlahkan dua variabel nilai untuk setiap orang.
const data = [ { name: "Bob", date: 3/27/22 value: 300 valueTwo: 100 }, { name: "Alice", date: 1/13/22 value: 500 valueTwo: 100 }, { name: "Bob", date: 5/13/22 value: 400 valueTwo: 100 }, { name: "Alice", date: 4/19/22 value: 350 valueTwo: 100 }, { name: "John", date: 2/15/22 value: 700 valueTwo: 100 }, ]saya butuh kan hasil seperti iniΒ
const result = [ { name: "Bob", value: 700 valueTwo: 200 }, { name: "Alice", value: 850 valueTwo: 200 }, { name: "John", value: 700 valueTwo: 100 }, ]
1 Kontribusi 0 Poin
atau respon:
Jawaban
const result = data.reduce((acc, current) => { const existing = acc.find(item => item.name === current.name); if (existing) { existing.value += current.value; existing.valueTwo += current.valueTwo; } else { acc.push({ name: current.name, value: current.value, valueTwo: current.valueTwo }); } return acc; }, []);
Di sini, kita menggunakan reduce() untuk mengubah array data menjadi objek result. Pada setiap iterasi, kita mencari apakah objek dengan nama yang sama sudah ada di dalam objek result. Jika ada, kita menambahkan nilai value dan valueTwo untuk objek yang sudah ada. Jika tidak ada, kita menambahkan objek baru ke dalam array result.
Setelah semua iterasi selesai, hasil akhirnya adalah array result yang berisi objek-objek dengan nama unik dan nilai value dan valueTwo yang telah dijumlahkan.
ku tak tau sesuai dengan pertanyaan ato tidak, tapi, semoga membantu ^^
Login untuk gabung berdiskusi
Pertanyaan Lainnya
Top Kontributor
- @ahanafi
813 Kontribusi 551 Poin
- @Nandar
647 Kontribusi 204 Poin
- @dianarifr
642 Kontribusi 316 Poin
- @Saputroandhi
509 Kontribusi 162 Poin
- @dodipsitorus
412 Kontribusi 145 Poin