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 サイトの他の関連記事を参照してください。