Pertimbangkan tatasusunan objek berikut:
objArr = [ {key:"Mon Sep 23 2013 00:00:00 GMT-0400", val:42}, {key:"Mon Sep 24 2013 00:00:00 GMT-0400", val:78}, {key:"Mon Sep 25 2013 00:00:00 GMT-0400", val:23}, {key:"Mon Sep 23 2013 00:00:00 GMT-0400", val:54}, // <- duplicate key ]
Matlamat kami adalah untuk menggabungkan kunci pendua dan jumlahkan nilai masing-masing, menghasilkan:
reducedObjArr = [ {key:"Mon Sep 23 2013 00:00:00 GMT-0400", val:96}, {key:"Mon Sep 24 2013 00:00:00 GMT-0400", val:78}, {key:"Mon Sep 25 2013 00:00:00 GMT-0400", val:23} ]
Sementara percubaan awal mungkin melibatkan lelaran dan menolak nilai, pendekatan yang lebih cekap melibatkan memanfaatkan fungsi terbina dalam JavaScript:
// Use a Map to count values with the same key const counts = objArr.reduce((prev, curr) => { let count = prev.get(curr.key) || 0; prev.set(curr.key, curr.val + count); return prev; }, new Map()); // Convert the Map back to an array of objects const reducedObjArr = [...counts].map(([key, value]) => { return {key, value}; });
Kaedah ini mengurangkan tatasusunan kepada Peta di mana kunci mewakili nilai kunci pendua dan nilai mewakili jumlahnya . Peta kemudiannya ditukarkan kembali kepada tatasusunan objek untuk kebolehbacaan.
Atas ialah kandungan terperinci Bagaimana untuk Mencantumkan Objek JavaScript dengan Kekunci Padanan dengan Cekap dan Menjumlahkan Nilainya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!