Menggunakan JavaScript Asli untuk Mengalih Keluar Objek daripada Tatasusunan oleh Harta Objek
Apabila bekerja dengan tatasusunan objek, mengalih keluar objek tertentu berdasarkan sifat boleh penting. Walau bagaimanapun, hanya menggunakan splice() boleh membawa kepada komplikasi kerana panjang tatasusunan yang semakin berkurangan. Begini cara untuk mengatasi isu ini menggunakan teknik JavaScript asli:
Mengurangkan i Selepas Pemadaman:
Untuk membetulkan isu dengan splice, kurangkan i selepas setiap pemadaman untuk mengambil kira indeks beralih. Ini menghalang pelangkauan elemen tatasusunan dan memastikan semua objek sasaran dialih keluar.
for (var i = 0; i < arrayOfObjects.length; i++) { var obj = arrayOfObjects[i]; if (listToDelete.indexOf(obj.id) !== -1) { arrayOfObjects.splice(i, 1); i--; } }
Menulis Semula Elemen Tatasusunan:
Untuk mengelakkan pemadaman masa linear, anda boleh tulis semula hanya elemen yang anda mahu simpan di atas tatasusunan.
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;
Menggunakan Set Cincang:
Untuk carian yang lebih pantas, gunakan set cincang untuk menyimpan ID daripada objek yang akan dipadamkan.
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;
Fungsi Boleh Guna Semula:
Balut logik ini menjadi fungsi boleh guna semula untuk kemudahan.
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));
Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Objek dengan Cekap dari Array Berdasarkan Sifat dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!