Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Menapis Objek Tatasusunan dengan Cekap mengikut Nilai Harta dalam JavaScript?

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

Barbara Streisand
Barbara Streisandasal
2024-10-29 14:45:021111semak imbas

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--;
    }
}

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!

Kenyataan:
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