ドット表記の JavaScript 文字列をオブジェクト参照に変換する
JavaScript では、ドット表記を使用してオブジェクトのプロパティを操作するのが一般的で便利です。 。ただし、ドットで区切られた階層を表す文字列があり、簡単にアクセスできるようにオブジェクト参照に変換する必要がある場合があります。
問題ステートメント:
ドット表記のオブジェクトと文字列が与えられた場合、対応するオブジェクトにアクセスするために文字列をオブジェクト参照に変換するにはどうすればよいですか? property?
例:
次のオブジェクトを考えます:
var obj = { a: { b: '1', c: '2' } }
文字列:
"a.b"
方法「a.b」を変換して、に関連付けられた値を取得できますかobj.a.b?
解決策:
これを実現するには、いくつかの方法があります。
1. eval() 関数の使用 (非推奨):
eval("var val = obj." + string);
このソリューションは、文字列をコードとして直接評価し、結果を val に割り当てます。ただし、セキュリティ上の懸念から eval() の使用は一般的に推奨されません。
2. [] 演算子の使用 (間接メソッド):
var val = obj[string];
このメソッドは、角括弧構文を使用してプロパティに間接的にアクセスします。文字列が有効な JavaScript 識別子 (スペースや特殊文字がない場合など) の場合に機能します。
3. reduce() メソッドの使用:
var val = string.split('.').reduce(function(obj, i) { return obj[i]; }, obj);
このソリューションは、文字列をピリオド (.) 文字で分割し、reduce() メソッドを使用して、ルート オブジェクトから開始してオブジェクト階層を横断します。
4. multiIndex() 関数の使用:
var val = multiIndex(obj, string.split('.')); function multiIndex(obj, is) { return is.length ? multiIndex(obj[is[0]],is.slice(1)) : obj }
このソリューションは、目的のプロパティが見つかるまでオブジェクト階層を再帰的に走査します。マルチレベルのドット表記と配列の両方を処理します (必要な場合)。
配列の処理 (オプション):
文字列に配列インデックスが含まれる場合は、次を使用できます。次のアプローチ:
var val = string.match(/[^\]\[.]+/g).reduce(function(obj, i) { return obj[i]; }, obj);
追加注意:
以上がドット表記の JavaScript 文字列をオブジェクト参照に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。