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

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

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-13 12:13:02849ブラウズ

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.keys() を 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。