Menapis Objek Tatasusunan mengikut Nilai Harta
Untuk mengalih keluar objek secara cekap daripada tatasusunan berdasarkan sifat tertentu, pertimbangkan penyelesaian berikut:
1. Penapisan Di Tempat:
Untuk mengurangkan panjang tatasusunan dengan betul, laksanakan pengurangan i selepas mengalih keluar item:
<code class="javascript">for (var i = 0; i < arrayOfObjects.length; i++) { var obj = arrayOfObjects[i]; if (listToDelete.indexOf(obj.id) !== -1) { arrayOfObjects.splice(i, 1); i--; } }
2. Elemen Tulis Ganti:
Tulis ganti elemen yang anda mahu simpan untuk mengelakkan pemadaman masa linear:
<code class="javascript">var end = 0; for (var i = 0; i < arrayOfObjects.length; i++) { var obj = arrayOfObjects[i]; if (listToDelete.indexOf(obj.id) === -1) { arrayOfObjects[end++] = obj; } } arrayOfObjects.length = end;
3. Pengoptimuman Set Cincang:
Untuk masa jalan moden, gunakan set cincang untuk mempercepatkan carian:
<code class="javascript">const setToDelete = new Set(listToDelete); let end = 0; for (let i = 0; i < arrayOfObjects.length; i++) { const obj = arrayOfObjects[i]; if (setToDelete.has(obj.id)) { arrayOfObjects[end++] = obj; } } arrayOfObjects.length = end;
4. Fungsi Boleh Digunakan Semula (Pilihan):
Balut operasi penapisan dalam fungsi boleh guna semula:
<code class="javascript">const filterInPlace = (array, predicate) => { let end = 0; for (let i = 0; i < array.length; i++) { const obj = array[i]; if (predicate(obj)) { array[end++] = obj; } } array.length = end; }; const toDelete = new Set(['abc', 'efg']); const arrayOfObjects = [{id: 'abc', name: 'oh'}, {id: 'efg', name: 'em'}, {id: 'hij', name: 'ge'}]; filterInPlace(arrayOfObjects, obj => !toDelete.has(obj.id)); console.log(arrayOfObjects); // [{id: 'hij', name: 'ge'}]</code>
Penyelesaian ini menapis dan mengalih keluar objek dengan cekap berdasarkan nilai sifat yang ditentukan.
Atas ialah kandungan terperinci Bagaimana untuk Menapis Objek Tatasusunan dengan Cekap mengikut Nilai Harta dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!