Rumah > hujung hadapan web > tutorial js > Bagaimanakah saya boleh mengumpulkan pelbagai objek mengikut harta tertentu dan menyatukan sifat lain ke dalam tatasusunan?

Bagaimanakah saya boleh mengumpulkan pelbagai objek mengikut harta tertentu dan menyatukan sifat lain ke dalam tatasusunan?

Mary-Kate Olsen
Lepaskan: 2024-12-15 12:08:14
asal
465 orang telah melayarinya

How can I group an array of objects by a specific property and consolidate other properties into arrays?

Mengumpulkan Item Susunan mengikut Harta Objek

Memandangkan tatasusunan objek dengan sifat kumpulan dan warna, matlamatnya adalah untuk mengumpulkan item mengikut nilai kumpulannya, menyatukan warna nilai untuk setiap kumpulan.

Masalah

Tatasusunan yang disediakan kelihatan seperti ini:

myArray = [
  {group: "one", color: "red"},
  {group: "two", color: "blue"},
  {group: "one", color: "green"},
  {group: "one", color: "black"}
]
Salin selepas log masuk

Output yang dikehendaki ialah tatasusunan seperti ini:

myArray = [
  {group: "one", color: ["red", "green", "black"]},
  {group: "two", color: ["blue"]}
]
Salin selepas log masuk

Penyelesaian

  1. Buat Peta Nama Kumpulan kepada Nilai : Gunakan kaedah reduce() untuk mencipta pemetaan daripada nama kumpulan kepada tatasusunan warna.
  2. Ubah kepada Format Yang Diingini: Cipta tatasusunan baharu dengan mengulangi kekunci peta dan mencipta objek untuk setiap kumpulan, dengan sifat kumpulannya ditetapkan kepada kunci dan set sifat warnanya kepada susunan warna yang dikaitkan dengan kunci itu.

Di bawah ialah pelaksanaan JavaScript:

var myArray = [
    {group: "one", color: "red"},
    {group: "two", color: "blue"},
    {group: "one", color: "green"},
    {group: "one", color: "black"}
];

var group_to_values = myArray.reduce(function (obj, item) {
    obj[item.group] = obj[item.group] || [];
    obj[item.group].push(item.color);
    return obj;
}, {});

var groups = Object.keys(group_to_values).map(function (key) {
    return {group: key, color: group_to_values[key]};
});

console.log("groups:");
console.log(JSON.stringify(groups, null, 4));
Salin selepas log masuk

Kod ini mencipta output yang diingini, dengan item dikumpulkan mengikut sifat kumpulannya dan nilai warnanya disatukan ke dalam tatasusunan.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengumpulkan pelbagai objek mengikut harta tertentu dan menyatukan sifat lain ke dalam tatasusunan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan