ホームページ  >  に質問  >  本文

文字列パスを使用して、JavaScript オブジェクトと配列のネストされた構造をトラバースします

<p>次のようなデータ構造があります:</p> <pre class="brush:php;toolbar:false;">var someObject = { 'パート1' : { '名前': 'パート 1', 'サイズ': '20'、 「数量」:「50」 }、 'パート2' : { '名前': 'パート 2', 'サイズ': '15'、 「数量」:「60」 }、 'パート3' : [ { '名前': 'パート 3A', 'サイズ': '10'、 「数量」:「20」 }、{ '名前': 'パート 3B', 'サイズ': '5'、 「数量」:「20」 }、{ '名前': 'パート 3C', 'サイズ': '7.5'、 「数量」:「20」 } ] };</pre> <p>次の変数を使用してデータにアクセスしたいと考えています: </p> <pre class="brush:php;toolbar:false;">var part1name = "part1.name"; var part2quantity = "part2.qty"; var part3name1 = "part3[0].name";</pre> <p>part1name には、<code>someObject.part1.name</code> の値 (「Part 1」) を入力する必要があります。同じことがpart2quantityにも当てはまり、60にパディングされます。 </p> <p>純粋な JavaScript または JQuery を使用してこれを実現する方法はありますか? </p>
P粉897881626P粉897881626432日前390

全員に返信(2)返信します

  • P粉720716934

    P粉7207169342023-08-16 19:39:27

    これは、_.get(obj, property) を使用する lodash 経由でサポートされるようになりました。 https://lodash.com/docs#get

    を参照してください。

    ドキュメントの例:

    リーリー

    返事
    0
  • P粉733166744

    P粉7331667442023-08-16 14:08:25

    すでに持っていた同様のコードに基づいてこれを作成しましたが、うまく機能するようです:

    リーリー ###使用法:### リーリー

    http://jsfiddle.net/alnitak/hEsys/

    で実際の例をご覧ください。

    EDIT

    左端のインデックスがオブジェクト内の適切にネストされたエントリに対応しない文字列が渡されると、このコードがエラーをスローすることに気づいた人もいます。これは当然の懸念ですが、呼び出されたときにこの関数が黙って unknown を返すよりも、try/catch ブロックを使用して処理するほうが適切だと思います。

    返事
    0
  • キャンセル返事