2017-08-16 14 views
0

これは素晴らしい夜のプロジェクトですが、実際には頭痛に悩まされています。JS - 文字列からオブジェクトなどで配列の動的な入れ子オブジェクトを構築する方法

私に必要なのは、この例のような関数である:返す必要があります

result = set("itemCategories[0].items[0].name", "Test") 

{ itemCategories: [ 
    { 
    items: [ {name: "Test"} ] 
    } 
}] 

...と、指定された属性「itemCategories [1] .items [の場合2] .nameの」この結果:

{ itemCategories: [ 
    null, 
    { 
    items: [ 
     null, 
     null, 
     {name: "Test"} 
    ] 
    } 
}] 
+0

(https://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-key)へそれを行う。 –

+1

なぜ文字列を渡す必要がありますか?なぜitemCategories [0] .items [0] .name = "Test"を行うだけではないのですか? – Shard

+0

@Shard Stringは別のシステムから与えられます。 – Chilian

答えて

1

使用lodash#set

result = lodash.set({}, "itemCategories[0].items[0].name", "Test") 
0

バニラJavaScript設定メソッドについて質問している場合は、これを行うことができます。

/* this is what you are trying to get. 
{ itemCategories: [ 
    { 
    items: [ {name: "Test"} ] 
    } 
}] 
*/ 

var mySet = new Set(); // your set object. 

データ(数値、テキスト、文字列、オブジェクト、配列、null)を作成します。

ver data1 = 365; 
ver data2 = 'Dragonfly'; 
ver data3 = {name: 'Bobby', age: 20000, job: 'dj'}; 

次に、addメソッドを使用してそのセットに追加するだけです。

mySet.add(data1); 
mySet.add(data2); 
mySet.add(data3); 

あなたが探しているものを得るには、これを書いてください。

var itms = {items: [{name: 'test'}]}; 

mySet.add(itms); 

セットに関する良いことは、配列のようなものです。だからあなたはforEachを使うことができます。

mySet.forEach(function(val){ 
    console.log(val); // gets all your data. 
}); 

hasメソッドを使用してデータに値が含まれているかどうかを確認することもできます。あなたは[こちらソリューション]を適応させることができるはず

mySet.has(365); // true 
mySet.has(36500000); as false 

JavaScript Set

関連する問題