Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 具有自定义路径的Lodash_u2;.set_Javascript_Arrays_Object_Lodash - Fatal编程技术网

Javascript 具有自定义路径的Lodash_u2;.set

Javascript 具有自定义路径的Lodash_u2;.set,javascript,arrays,object,lodash,Javascript,Arrays,Object,Lodash,我试图找出如何使用lodash_u1;.setWith自定义路径。在这里给出的示例中: var arr = [ ['a'], ['a','b'], ['a','b','c'], ['a','b','c','d'], ] var object = {}; for (i = 0; i < arr.length; i++) { _.setWith(object, arr[i], {'data' : {'path': 'path', 'title': 'title'

我试图找出如何使用lodash_u1;.setWith自定义路径。在这里给出的示例中:

var arr = 
[
  ['a'],
  ['a','b'],
  ['a','b','c'],
  ['a','b','c','d'],
]

var object = {};

for (i = 0; i < arr.length; i++) { 
    _.setWith(object, arr[i], {'data' : {'path': 'path', 'title': 'title'}}, Object)
}

console.log(object)
使用定制器是否可以获得类似的内容:

{
  a: {
    data: {}
    children: {
      b: {
        data: {}
        children: {
          c: {
            data: {}
            children: {
              d: {
                data: {}
                children: {}
              }
            }
          }
        }
      }
    }
  }
}

你想要的是有['a','children','b','children','c']

您可以将arr转换为以下内容:

{
  a: {
    data: {}
    b: {
      data: {}
      c: {
        data: {}
        d: {
          data: {}
        }
      }
    }
  }
}
var arr = 
[
  ['a'],
  ['a','children','b'],
  ['a','children','b','children','c'],
  ['a','children','b','children','c','children','d'],
]
另一种更简单的方法是将每个元素转换为字符串速记:['a','b']->'a.children.b',我在下面的示例中通过将数组与.join('.children.')连接来实现这一点

(i=0;i _塞维思先生( 对象 arr[i].加入('.children.'), {'data':{'path':'path','title':'title'}, 对象 ) }

您可以使用
\uuzip()
'children'
数组将
'children'
添加到路径中,将结果展平,并获取除最后一项以外的所有内容

var-arr=
[
['a'],
[a',b'],
[a',b',c'],
[a'、'b'、'c'、'd'],
]
var对象={};
var children=uz.fill(新数组(arr.length),'children');//子数组的大小类似于最长路径
对于(i=0;i
for (i = 0; i < arr.length; i++) { 
    _.setWith(
        object,
        arr[i].join('.children.'),
        {'data' : {'path': 'path', 'title': 'title'}},
        Object
    )
}