Javascript 如何使用递归将深嵌套数组转换为深嵌套对象?
我正在尝试创建一个函数来转换如下数组:Javascript 如何使用递归将深嵌套数组转换为深嵌套对象?,javascript,Javascript,我正在尝试创建一个函数来转换如下数组: [['a', 1], ['b', 2], ['c', [['d', 4]]]] { a: 1, b: 2, c: { d: 4 } } 变成这样一个物体: [['a', 1], ['b', 2], ['c', [['d', 4]]]] { a: 1, b: 2, c: { d: 4 } } 到目前为止,我只是有一个将正则数组转换为正则对象的函数,我已经掌握了递归的窍门,我只是不知道在这种情况下如何实现它。以下是我正在使用的函数: const dee
[['a', 1], ['b', 2], ['c', [['d', 4]]]]
{ a: 1, b: 2, c: { d: 4 } }
变成这样一个物体:
[['a', 1], ['b', 2], ['c', [['d', 4]]]]
{ a: 1, b: 2, c: { d: 4 } }
到目前为止,我只是有一个将正则数组转换为正则对象的函数,我已经掌握了递归的窍门,我只是不知道在这种情况下如何实现它。以下是我正在使用的函数:
const deepArrayToObject = function(arr) {
let obj = {};
if (arr !== []) {
return obj;
}
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr[i].length; j++) {
let key = arr[i][0];
let value = arr[i][1];
obj[key] = value;
}
}
return obj;
};
感谢您的反馈。关键在于检查给定属性的值是否为数组。如果是,请再次调用该值的函数,否则按原样使用该值 这是一个使用Array.prototype.reduce的版本 常数a=[[a',1],[b',2],[c',[d',4]]; 常数o=阵列对象a; 控制台标志; 函数arrayToObjecta{ 返回a.reduceo[k,v]=>Object.assigno{ [k] :Array.isArrayv?arrayTobObjectv:v, }, {};
} 诀窍是检查给定属性的值是否为数组。如果是,请再次调用该值的函数,否则按原样使用该值 这是一个使用Array.prototype.reduce的版本 常数a=[[a',1],[b',2],[c',[d',4]]; 常数o=阵列对象a; 控制台标志; 函数arrayToObjecta{ 返回a.reduceo[k,v]=>Object.assigno{ [k] :Array.isArrayv?arrayTobObjectv:v, }, {};
} 您只需要一个循环,对于该值,检查您有哪些循环,如果它是数组,则执行递归 const deepArrayToObject=functionarr{ 设obj={}; //这毫无用处 //如果arr!=[]{ //返回obj; // } 对于let i=0;i