次のようなデータ構造があります:
var someObject = { 'パート1' : { '名前': 'パート 1', 'サイズ': '20'、 「数量」:「50」 }、 'パート2' : { '名前': 'パート 2', 'サイズ': '15'、 「数量」:「60」 }、 'パート3' : [ { '名前': 'パート 3A', 'サイズ': '10'、 「数量」:「20」 }、{ '名前': 'パート 3B', 'サイズ': '5'、 「数量」:「20」 }、{ '名前': 'パート 3C', 'サイズ': '7.5'、 「数量」:「20」 } ] };
次の変数を使用してデータにアクセスしたいと考えています:
var part1name = "part1.name"; var part2quantity = "part2.qty"; var part3name1 = "part3[0].name";
part1name には、someObject.part1.name
の値 (「Part 1」) を入力する必要があります。同じことがpart2quantityにも当てはまり、60にパディングされます。
純粋な JavaScript または JQuery を使用してこれを実現する方法はありますか?
これは、
を参照してください。_.get(obj, property)
を使用する lodash 経由でサポートされるようになりました。https://lodash.com/docs#getドキュメントの例:
リーリーすでに持っていた同様のコードに基づいてこれを作成しましたが、うまく機能するようです:
リーリー ###使用法:### リーリー http://jsfiddle.net/alnitak/hEsys/で実際の例をご覧ください。
EDIT左端のインデックスがオブジェクト内の適切にネストされたエントリに対応しない文字列が渡されると、このコードがエラーをスローすることに気づいた人もいます。これは当然の懸念ですが、呼び出されたときにこの関数が黙ってunknownを返すよりも、
try/catch
ブロックを使用して処理するほうが適切だと思います。