ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript オブジェクト内のキーと値のペアを効果的にフィルターするにはどうすればよいですか?

JavaScript オブジェクト内のキーと値のペアを効果的にフィルターするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-24 07:04:11731ブラウズ

How can I effectively filter the key-value pairs in a JavaScript object?

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

filter() プロトタイプは ECMAScript 5 の配列型に対して存在しますが、オブジェクト型に対しては存在しません。 JavaScript でオブジェクトの filter() 関数を実装するには、次の方法を使用できます。

1. reduce() と Object.keys() の使用

このメソッドは、reduce() を使用してオブジェクトのキーをループし、Object.keys() を使用してそれらのキーを取得します。次に、述語関数に基づいてキーをフィルタリングし、フィルタリングされたキーと値のペアを持つ新しいオブジェクトを返します:

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

2。 map() と Spread 構文の使用

(1) と同様のアプローチですが、reduce() の代わりに、map() と Spread 構文 (...) を使用して新しいオブジェクト:

Object.filter = (obj, predicate) => {
  Object.keys(obj)
    .filter(key => predicate(obj[key]))
    .map(key => ({ [key]: obj[key] }))
    .reduce((a, b) => ({ ...a, ...b }), {});
};

3. Object.entries() と Object.fromEntries() の使用

このメソッドは、Object.entries() を使用してオブジェクトをキーと値のペアの配列に変換し、次に Object.fromEntries() を使用して再構築します。フィルタリング後のオブジェクト:

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

4.警告: Object.prototype の拡張を避ける

これらのソリューションはオブジェクトに機能的な filter() 実装を提供しますが、Object.prototype を直接拡張することは悪い習慣であると考えられています。代わりに、Object.assign() や Object.keys() などの既存の JavaScript グローバル ユーティリティ関数と同様に、フィルター関数をスタンドアロン ユーティリティ関数として提供します。

以上がJavaScript オブジェクト内のキーと値のペアを効果的にフィルターするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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