Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Menapis Objek JavaScript Tanpa Mengubah Suai Prototaip Asli?

Bagaimana untuk Menapis Objek JavaScript Tanpa Mengubah Suai Prototaip Asli?

Barbara Streisand
Lepaskan: 2024-11-27 11:47:11
asal
584 orang telah melayarinya

How to Filter JavaScript Objects Without Modifying the Native Prototype?

Penapisan Objek dalam JavaScript Menggunakan Sambungan Prototaip

ECMAScript 5 memperkenalkan kaedah penapis() untuk jenis Array, tetapi bukan untuk jenis Objek. Ini menimbulkan persoalan tentang cara melaksanakan kaedah penapis() untuk Objek dalam JavaScript.

Pelaksanaan Penapis Objek Tersuai

Satu pendekatan ialah memanjangkan Object.prototype dengan kaedah penapis tersuai():

Object.prototype.filter = function (predicate) {
    var result = {};

    for (var key in this) {
        if (this.hasOwnProperty(key) && !predicate(this[key])) {
            result[key] = this[key];
        }
    }

    return result;
};
Salin selepas log masuk

Pelaksanaan ini menggunakan gelung untuk mengulangi sifat objek sendiri dan menyemak sama ada fungsi predikat mengembalikan benar atau salah untuk setiap nilai. Jika palsu, pasangan nilai kunci ditambahkan pada objek hasil.

Walau bagaimanapun, memanjangkan Object.prototaip asli dianggap amalan buruk, kerana ia boleh menyebabkan konflik dengan perpustakaan atau kod lain.

Pendekatan Alternatif

Daripada memanjangkan Object.prototype, terdapat beberapa alternatif pendekatan untuk menapis objek dalam JavaScript:

  • Menggunakan reduce dan Object.keys:
Object.filter = (obj, predicate) =>
    Object.keys(obj)
        .filter((key) => predicate(obj[key]))
        .reduce((res, key) => (res[key] = obj[key], res), {});
Salin selepas log masuk
  • Menggunakan peta dan sebar sintaks:
Object.filter = (obj, predicate) => {
    const filteredValues = Object.keys(obj).map((key) => {
        if (predicate(obj[key])) {
            return [key, obj[key]];
        }
    }).filter(Boolean);

    return Object.fromEntries(filteredValues);
};
Salin selepas log masuk
  • Menggunakan Object.entry dan Object.fromEntries:
Object.filter = (obj, predicate) => {
    const filteredEntries = Object.entries(obj).filter(
        ([key, value]) => predicate(value)
    );

    return Object.fromEntries(filteredEntries);
};
Salin selepas log masuk

Contoh Penggunaan

Mari menapis objek menggunakan salah satu pendekatan alternatif ini:

const scores = { John: 2, Sarah: 3, Janet: 1 };

// Using the `reduce` and `Object.keys` approach:
const filteredScores = Object.filter(scores, (score) => score > 1);

console.log(filteredScores); // { Sarah: 3 }
Salin selepas log masuk

Dengan menggunakan kaedah alternatif ini, anda boleh menapis objek dalam JavaScript tanpa melanjutkan prototaip asli.

Atas ialah kandungan terperinci Bagaimana untuk Menapis Objek JavaScript Tanpa Mengubah Suai Prototaip Asli?. 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