ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript オブジェクトの `filter()` メソッドを実装するにはどうすればよいでしょうか?

JavaScript オブジェクトの `filter()` メソッドを実装するにはどうすればよいでしょうか?

Linda Hamilton
リリース: 2024-11-20 03:26:01
オリジナル
712 人が閲覧しました

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

JavaScript: オブジェクトの filter() の実装

JavaScript は配列型の filter() プロトタイプを提供しますが、この機能はオブジェクトにはありません種類。この制限に対処するために、オブジェクト専用の 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート