Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Melaksanakan Kaedah `filter()` Tersuai untuk Objek dalam JavaScript?

Bagaimana untuk Melaksanakan Kaedah `filter()` Tersuai untuk Objek dalam JavaScript?

Patricia Arquette
Patricia Arquetteasal
2024-11-13 12:13:02772semak imbas

How to Implement a Custom `filter()` Method for Objects in JavaScript?

JavaScript: Melaksanakan Kaedah penapis Tersuai() untuk Objek

Spesifikasi ECMAScript 5 memperkenalkan prototaip penapis() untuk tatasusunan, tetapi tidak untuk objek. Memanjangkan objek terbina dalam JavaScript biasanya tidak digalakkan. Walau bagaimanapun, jika dikehendaki, seseorang boleh mencipta fungsi penapis() tersuai untuk objek menggunakan pendekatan berikut:

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), {});

// Example:
const scores = {
  John: 2,
  Sarah: 3,
  Janet: 1
};
const filtered = Object.filter(scores, score => score > 1);
console.log(filtered);

2. Menggunakan reduce() dan Object.keys() dengan Object.assign()

Object.filter = (obj, predicate) =>
  Object.keys(obj)
    .filter(key => predicate(obj[key]))
    .reduce((res, key) => Object.assign(res, { [key]: obj[key] }), {});

// Example: same as above

3. Menggunakan map() dan menyebarkan sintaks

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

// Example: same as above

4. Menggunakan Object.entry() dan Object.fromEntries()

Object.filter = (obj, predicate) =>
  Object.fromEntries(
    Object.entries(obj).filter(([key, value]) => predicate(value))
  );

// Example: same as above

Ingat, melanjutkan prototaip terbina dalam boleh mendatangkan akibat yang tidak diingini. Secara umumnya adalah lebih baik untuk menyediakan fungsi tersuai sebagai utiliti yang berdiri sendiri atau memanjangkan objek global khusus untuk fungsi tertentu.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Kaedah `filter()` Tersuai untuk Objek 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