首頁 > web前端 > js教程 > 如何為 JavaScript 物件實作'filter()”方法?

如何為 JavaScript 物件實作'filter()”方法?

Linda Hamilton
發布: 2024-11-20 03:26:01
原創
694 人瀏覽過

How can you implement a `filter()` method for JavaScript objects?

JavaScript:為物件實作filter()

JavaScript為Array類型提供了filter()原型,但Object沒有此功能類型。為了解決這個限制,讓我們探索如何專門為物件建立一個filter()實作。

實作:

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

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

  return result;
};
登入後複製

雖然這個實作是獨立工作的,但添加將其發送到使用jQuery 1.5 和jQuery UI 1.8.9 的網站可能會觸發JavaScript 錯誤。

替代解決方案:

不要修改物件原型,而是考慮這些獨立的或實用函數:

1。使用reduce和Object.keys:

Object.filter = (obj, predicate) => 
  Object.keys(obj)
        .filter(key => predicate(obj[key]))
        .reduce((res, key) => (res[key] = obj[key], res), {});
登入後複製

2.使用映射和展開語法:

Object.filter = (obj, predicate) => 
  Object.entries(obj)
        .filter(([key, value]) => predicate(value))
        .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});
登入後複製

3.使用Object. entries 和Object.fromEntries:

Object.filter = (obj, predicate) => 
  Object.fromEntries(
    Object.entries(obj).filter(([key, value]) => predicate(value))
  );
登入後複製

用法範例:

var scores = {
  John: 2,
  Sarah: 3,
  Janet: 1
};
var filtered = Object.filter(scores, score => score > 1); 
console.log(filtered);
登入後複製

這些替代方案提供了一種更乾淨、更易於維護的方式過濾物件屬性,同時保留原始物件。

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

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