ホームページ > ウェブフロントエンド > jsチュートリアル > 文字列名を使用してネストされた JavaScript オブジェクトのプロパティを設定するにはどうすればよいですか?

文字列名を使用してネストされた JavaScript オブジェクトのプロパティを設定するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-24 11:02:14
オリジナル
365 人が閲覧しました

How Can I Set Nested JavaScript Object Properties Using String Names?

JavaScript で文字列名を使用したネストされたオブジェクト プロパティの設定

JavaScript では、オブジェクト プロパティへのアクセスと変更はデータの管理に不可欠です。ただし、直接のキー シーケンスではなく、文字列としてプロパティ名のみが提供された場合はどうなるでしょうか?これは、プロパティが動的に生成されるか、ユーザー入力として受信されるシナリオで発生する可能性があります。

次のオブジェクトを考えてみましょう:

var obj = {};
ログイン後にコピー

プロパティ名:

var propName = "foo.bar.foobar";
ログイン後にコピー

obj.foo.bar.foobar の値を設定するには、従来は次のコマンドを使用します。構文:

obj.foo.bar.foobar = "hello world";
ログイン後にコピー

ただし、このアプローチでは、チェーン内の各プロパティを手動で走査する必要があり、特に深くネストされたプロパティの場合、退屈でエラーが発生しやすくなります。

再帰プロパティ割り当て関数

この課題に対処するために、assign と呼ばれる再帰関数を実装できます。割り当てプロセスを簡素化するには:

function assign(obj, prop, value) {
    if (typeof prop === "string")
        prop = prop.split(".");

    if (prop.length > 1) {
        var e = prop.shift();
        assign(obj[e] =
                 Object.prototype.toString.call(obj[e]) === "[object Object]"
                 ? obj[e]
                 : {},
               prop,
               value);
    } else
        obj[prop[0]] = value;
}
ログイン後にコピー

この関数は、オブジェクト (obj)、文字列としてのプロパティ名 (prop)、およびプロパティに割り当てる値 (value) を受け取ります。オブジェクト階層を再帰的に走査し、適切なプロパティを指定された値に設定します。

使用法

assign を使用して obj.foo.bar.foobar の値を設定するにはfunction:

var obj = {},
    propName = "foo.bar.foobar";

assign(obj, propName, "Value");
ログイン後にコピー

このコードは、必要なネストされたプロパティを作成し、次の値を設定します。 obj.foo.bar.foobar を "Value" に変更します。

再帰的なプロパティ割り当て関数を利用すると、文字列名を使用して JavaScript でネストされたオブジェクトのプロパティに動的にアクセスして変更でき、複雑なデータ構造に対して柔軟でスケーラブルなソリューションを提供できます。 .

以上が文字列名を使用してネストされた JavaScript オブジェクトのプロパティを設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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