将数组转换为对象javascript

将数组转换为对象javascript,javascript,Javascript,我有以下数组: ["recordList", "userList", "lastChanged"] 我想要这样的东西: lastChangedValue = "231231443234"; var object = {}; object = { recordList: { userList: { lastChanged: lastChangedValue } } } 我怎么能做到? 提前感谢。试试这个: var数

我有以下数组:

["recordList", "userList", "lastChanged"]
我想要这样的东西:

lastChangedValue = "231231443234";        

var object = {};

object = {
   recordList: {
       userList: {
         lastChanged: lastChangedValue 
      }
   }
}
我怎么能做到? 提前感谢。

试试这个:

var数组=[“记录列表”、“用户列表”、“最后更改”];
var value=“231231443234”;
函数arrayToObject(数组、对象、值){
var ref=对象;
对于(var i=0;i尝试以下方法:

var数组=[“记录列表”、“用户列表”、“最后更改”];
var value=“231231443234”;
函数arrayToObject(数组、对象、值){
var ref=对象;

对于(var i=0;i,您可以迭代属性名称,并在每次迭代中创建一个嵌套级别的新对象:

var props = ["recordList", "userList", "lastChanged"];
var lastChangedValue = "231231443234";

var obj = {}
var nested = obj;
props.forEach(function(o, i) {
    nested[o] = i === props.length - 1 ? lastChangedValue : {};
    nested = nested[o];
});

console.log(obj);

您可以迭代属性名称,并在每次迭代中创建一个嵌套级别的新对象:

var props = ["recordList", "userList", "lastChanged"];
var lastChangedValue = "231231443234";

var obj = {}
var nested = obj;
props.forEach(function(o, i) {
    nested[o] = i === props.length - 1 ? lastChangedValue : {};
    nested = nested[o];
});

console.log(obj);

可能有很多方法可以做到这一点,一种方法是使用reduce

var keys = ["recordList", "userList", "lastChanged"];
var temp = keys.slice().reverse(),
    lastChangedValue = "231231443234";  
var result = temp.reduce( function (obj, val, ind, arr) {
  if (ind===0) {
    obj[val] = lastChangedValue;
    return obj;
  } else {
    var x = {};
    x[val] = obj;
    return x;
  }
}, {});
console.log(result);

可能有很多方法可以做到这一点,一种方法是使用reduce

var keys = ["recordList", "userList", "lastChanged"];
var temp = keys.slice().reverse(),
    lastChangedValue = "231231443234";  
var result = temp.reduce( function (obj, val, ind, arr) {
  if (ind===0) {
    obj[val] = lastChangedValue;
    return obj;
  } else {
    var x = {};
    x[val] = obj;
    return x;
  }
}, {});
console.log(result);
递归求解

var字段=[“记录列表”、“用户列表”、“最后更改”];
lastChangedValue=“231231443234”;
var对象={};
(函数添加字段(o、i、v){
if(i==fields.length-1){
o[字段[i]]=v;
回来
}
o[fields[i]]={};
添加字段(o[fields[i]],++i,v)
})(对象,0,lastChangedValue);
警报(JSON.stringify(object));
递归求解

var字段=[“记录列表”、“用户列表”、“最后更改”];
lastChangedValue=“231231443234”;
var对象={};
(函数添加字段(o、i、v){
if(i==fields.length-1){
o[字段[i]]=v;
回来
}
o[fields[i]]={};
添加字段(o[fields[i]],++i,v)
})(对象,0,lastChangedValue);

警报(JSON.stringify(对象))
嵌套是否一致?因此,您希望每个数组项成为一个对象,其中包含其下的键作为键?嵌套是否一致?因此,您希望每个数组项成为一个对象,其中包含其下的键作为键?请记住,reduce是在IE10中引入的,在IE9或以下版本中不受支持。请记住,reduce是引入的在IE10中为d,在IE9或以下版本中不受支持。