Bagaimana untuk Menapis Objek Tatasusunan dengan Cekap mengikut Nilai Harta dalam JavaScript?

Barbara Streisand
Lepaskan: 2024-10-29 14:45:02
asal
1062 orang telah melayarinya

How to Efficiently Filter Array Objects by Property Value in JavaScript?

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

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

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

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

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!

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