文字列パスを使用して、JavaScript オブジェクトと配列のネストされた構造をトラバースします
P粉897881626
P粉897881626 2023-08-15 21:01:19
0
2
417
<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粉897881626
P粉897881626

全員に返信(2)
P粉720716934

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

を参照してください。

ドキュメントの例:

リーリー
いいねを押す +0
P粉733166744

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

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

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

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

EDIT

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート