求助:如何完成JavaScript嵌套数组转嵌套对象的递归实现
嵌套数组转嵌套对象的实现方案
你的思路完全正确,核心就是递归处理嵌套的数组值,现有代码只差关键一步——把递归调用的结果赋值给对应的对象属性。
修正后的完整代码
const nestedArrayToObject = function (arr) { let obj = {}; for (let i = 0; i < arr.length; i++) { let key = arr[i][0]; let val = arr[i][1]; // 若值为数组则递归转换为对象,否则直接赋值 obj[key] = Array.isArray(val) ? nestedArrayToObject(val) : val; } return obj; };
验证示例
- 测试第一个输入:
console.log(nestedArrayToObject([['a', 1], ['b', 2], ['c', [['d', 4]]]])); // 输出:{ a: 1, b: 2, c: { d: 4 } }
- 测试第二个输入:
console.log(nestedArrayToObject([['a', 1], ['b', 2], ['c', [['d', [['e', 5], ['f', 6]]]]]])); // 输出:{ a: 1, b: 2, c: { d: { e: 5, f: 6 } } }
逻辑说明
- 遍历输入数组的每一项,每一项都是
[键, 值]的固定结构 - 对值做类型判断:如果是数组,递归调用当前函数将其转换为嵌套对象,再赋值给当前键;如果是非数组类型,直接赋值
- 递归会自动逐层处理多层嵌套的数组,直到遇到非数组类型的值才停止递归
内容的提问来源于stack exchange,提问作者Sina molaverdikhani
相关产品推荐
相关产品推荐

