Rumah > hujung hadapan web > tutorial js > Bagaimanakah Saya Boleh Menapis Sifat dalam Objek JavaScript?

Bagaimanakah Saya Boleh Menapis Sifat dalam Objek JavaScript?

Susan Sarandon
Lepaskan: 2024-11-11 20:46:03
asal
476 orang telah melayarinya

How Can I Filter Properties in a JavaScript Object?

Kaedah JavaScript filter() untuk Objek

Walaupun jenis Array mempunyai kaedah penapis(), jenis Objek tidak. Artikel ini bertujuan untuk menyediakan penyelesaian untuk melaksanakan kaedah sedemikian.

Pelaksanaan Penapis Objek Tersuai

Satu pendekatan melibatkan memanjangkan Object.prototype:

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

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

    return result;
};
Salin selepas log masuk

Alternatif Penyelesaian

Walau bagaimanapun, meluaskan prototaip global secara amnya tidak digalakkan. Sebaliknya, pertimbangkan alternatif ini:

1. 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

2. Sintaks Peta dan Sebarkan

Object.filter = (obj, predicate) =>
    Object.fromEntries(
        Object.entries(obj)
            .filter(([key, value]) => predicate(value))
            .map(([key, value]) => [key, value])
    );
Salin selepas log masuk

3. Object.assign

const filter = (obj, predicate) =>
    Object.assign(
        {},
        ...Object.keys(obj)
            .filter(key => predicate(obj[key]))
            .map(key => ({[key]: obj[key]}))
    );
Salin selepas log masuk

Contoh Penggunaan

var foo = { bar: "Yes", moo: undefined };

var filtered = Object.filter(foo, property => typeof property === "undefined");

console.log(filtered); // { moo: undefined }
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menapis Sifat dalam Objek 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