Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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将数组转换为嵌套对象?_Javascript_Lodash - Fatal编程技术网

Javascript 是否可以使用Lodash将数组转换为嵌套对象?

Javascript 是否可以使用Lodash将数组转换为嵌套对象?,javascript,lodash,Javascript,Lodash,我有一个数组: ["a", "b", "c", "d"] 我需要将其转换为对象,但格式如下: a: { b: { c: { d: 'some value' } } } 如果var common=[a,b,c,d],我尝试: var objTest = _.indexBy(common, function(key) { return key; } ); 但这只会导致: [object Object] { a: "a", b: "b",

我有一个数组:

["a", "b", "c", "d"]
我需要将其转换为对象,但格式如下:

a: {
  b: {
    c: {
      d: 'some value'
    }
  }
}
如果var common=[a,b,c,d],我尝试:

var objTest = _.indexBy(common, function(key) { 
  return key;
 }
);
但这只会导致:

[object Object] {
  a: "a",
  b: "b",
  c: "c",
  d: "d"
}

由于要从数组中查找单个对象,因此使用u.reduce或u.reduceRight是完成任务的一个很好的候选方法。让我们来探讨一下

在这种情况下,从左到右工作将很困难,因为需要执行递归才能到达最里面的对象,然后再向外工作。那么让我们试试uu.reduceRight:


证明这是有效的。

因为您要从数组中查找单个对象,所以使用u.reduce或u.reduceRight是完成此任务的一个很好的候选方法。让我们来探讨一下

在这种情况下,从左到右工作将很困难,因为需要执行递归才能到达最里面的对象,然后再向外工作。那么让我们试试uu.reduceRight:


证明这是有效的。

虽然TO明确要求使用lodash,但值得注意的是,JS可以做到ootB:+不管怎样,这都是一个好答案。不幸的是,ES5并不总是一个可行的选择。尽管TO明确要求使用lodash,但值得注意的是,JS可以做到ootB:+无论如何,ES5并不总是一个可行的选择,不幸的是。
var common = ["a", "b", "c", "d"];
var innerValue = "some value";

_.reduceRight(common, function (memo, arrayValue) {
    // Construct the object to be returned.
    var obj = {};

    // Set the new key (arrayValue being the key name) and value (the object so far, memo):
    obj[arrayValue] = memo;

    // Return the newly-built object.
    return obj;
}, innerValue);