首頁 > web前端 > js教程 > 如何在 JavaScript 中為物件實作自訂「filter()」方法?

如何在 JavaScript 中為物件實作自訂「filter()」方法?

Patricia Arquette
發布: 2024-11-13 12:13:02
原創
876 人瀏覽過

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

JavaScript:為物件實作自訂filter() 方法

ECMAScript 5 規格引入了陣列的filter() 原型,但沒有引入對於物體。通常不鼓勵擴充 JavaScript 的內建物件。但是,如果需要,可以使用以下方法為物件建立自訂 filter()功能:

1.使用reduce()和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.將reduce()和Object.k eys()與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.使用map()和展開語法

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

// Example: same as above
登入後複製

4.使用Object.entries() 和 Object.fromEntries()

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

// Example: same as above
登入後複製

請記住,擴充內建原型可能會產生意想不到的後果。通常最好將自訂函數作為獨立實用程式提供,或專門針對特定功能擴展全域物件。

以上是如何在 JavaScript 中為物件實作自訂「filter()」方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板