Pertimbangkan tatasusunan objek di mana setiap objek mewakili individu dengan nama dan umur:
var array = [ { "name": "Joe", "age": 17 }, { "name": "Bob", "age": 17 }, { "name": "Carl", "age": 35 } ];
Tugasnya ialah untuk mengekstrak umur yang berbeza daripada tatasusunan ini, menghasilkan tatasusunan baharu yang unik nilai:
[17, 35]
ES6 memperkenalkan struktur data Set, yang secara automatik mengekalkan koleksi nilai unik. Ini boleh digunakan untuk mengekstrak umur yang berbeza dengan cekap:
const distinctAges = [...new Set(array.map(object => object.age))];
Pendekatan ini mencipta tatasusunan baharu yang merangkumi hanya nilai unik yang terdapat dalam sifat umur setiap objek dalam tatasusunan asal.
Jika prestasi diutamakan, anda boleh mempertimbangkan struktur data alternatif, seperti peta atau objek:
const ageMap = {}; array.forEach(object => { ageMap[object.age] = true; }); const distinctAges = Object.keys(ageMap).map(Number);
Dalam senario ini, nilai umur disimpan sebagai kunci dalam objek (peta). Kaedah Object.keys() mendapatkan semula kunci unik (nilai umur) sebagai tatasusunan, yang kemudiannya ditukar kepada nilai angka menggunakan peta(Nombor).
Kaedah lelaran awal dibentangkan dalam soalan boleh diperbaiki dengan menggunakan kaedah includes() untuk menyemak nilai pendua:
var distinct = []; for (var i = 0; i < array.length; i++) { if (!distinct.includes(array[i].age)) { distinct.push(array[i].age); } }
Ini pengoptimuman mengurangkan bilangan perbandingan yang diperlukan dengan mengelakkan berbilang semakan untuk umur pendua.
Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Umur Unik daripada Susunan Objek dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!