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

JavaScript オブジェクトのプロパティをフィルターするにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-11 20:46:03
オリジナル
466 人が閲覧しました

How Can I Filter Properties in a JavaScript Object?

オブジェクトの JavaScript filter() メソッド

Array 型には filter() メソッドがありますが、Object 型にはありません。この記事は、そのようなメソッドを実装するためのソリューションを提供することを目的としています。

カスタム オブジェクト フィルターの実装

1 つのアプローチには、Object.prototype:

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

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

    return result;
};
ログイン後にコピー
の拡張が含まれます。

代替ソリューション

ただし、グローバル プロトタイプの拡張は一般的に推奨されません。代わりに、次の代替案を検討してください。

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.fromEntries(
        Object.entries(obj)
            .filter(([key, value]) => predicate(value))
            .map(([key, value]) => [key, value])
    );
ログイン後にコピー

3. Object.assign

const filter = (obj, predicate) =>
    Object.assign(
        {},
        ...Object.keys(obj)
            .filter(key => predicate(obj[key]))
            .map(key => ({[key]: obj[key]}))
    );
ログイン後にコピー

使用例

var foo = { bar: "Yes", moo: undefined };

var filtered = Object.filter(foo, property => typeof property === "undefined");

console.log(filtered); // { moo: undefined }
ログイン後にコピー

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

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