JS - 如何使用字符串中的对象等构建数组的动态嵌套对象

时间:2017-08-16 15:52:34

标签: javascript

这是一个不错的晚上项目,但实际上我有些头疼。

我需要的只是一个像这个例子的函数:

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

应返回:

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

...如果是给定属性" itemCategories [1] .items [2] .name"结果如下:

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

2 个答案:

答案 0 :(得分:1)

使用lodash#set

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

答案 1 :(得分:0)

如果您询问vanilla JavaScript Set方法,那么您可以这样做。

/* 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);

关于set的好处就像数组一样。所以你可以使用forEach。

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

您甚至可以使用has方法检查数据中是否有值。

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

JavaScript Set