1. ホーム
  2. javascript

[解決済み] ジャバスクリプト オブジェクトへのパスを文字列として渡すことで、オブジェクトから深い値を取得する [重複] 。

2023-08-04 18:46:34

質問

重複の可能性があります。

文字列キーでネストしたJavaScriptオブジェクトにアクセスする

タイトルは十分に明確でないかもしれません、私はちょうど私が探しているものを指定する方法を知りませんでした、そして私の英語は本当に悪いです、申し訳ありません。

私はオブジェクトの値を返す関数を作成しようとしていますが、ネストされたオブジェクトとうまく再生することもできます。例えば、次のようなものです。

var obj = {
  foo: { bar: 'baz' }
};

関数に文字列 "foo.bar" を与えて obj.foo.bar の値にアクセスしたいです。

function(obj, path) {
  // Path can be "foo.bar", or just "foo".
}

ありがとうございます。

どのように解決するのですか?

これを考えてみましょう。

var obj = {
  foo: { bar: 'baz' }
};

function deepFind(obj, path) {
  var paths = path.split('.')
    , current = obj
    , i;

  for (i = 0; i < paths.length; ++i) {
    if (current[paths[i]] == undefined) {
      return undefined;
    } else {
      current = current[paths[i]];
    }
  }
  return current;
}

console.log(deepFind(obj, 'foo.bar'))