Bagaimana untuk Mengeluarkan Objek dengan Cekap dari Array Berdasarkan Sifat dalam JavaScript?

Barbara Streisand
Lepaskan: 2024-10-30 08:59:39
asal
455 orang telah melayarinya

How to Efficiently Remove Objects from an Array Based on Properties in JavaScript?

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--;
    }
}
Salin selepas log masuk

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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));
Salin selepas log masuk

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!