如何将多维数组转换为对象并保留原二维结构?
二维数组转对象数组的实现方案
原函数的问题在于初始化了一个单一对象存储所有键值对,导致二维结构被扁平化,所有子数组的键都合并到了同一个对象中。要实现需求,需要为每个子数组单独创建对象,再将这些对象收集为数组返回。
实现方式一:使用map + forEach
function toObject(arr) { // 遍历外层数组,每个子数组对应一个独立对象 return arr.map(subArr => { const obj = {}; // 遍历子数组,将元素作为键,索引转字符串作为值 subArr.forEach((key, index) => { obj[key] = index.toString(); }); return obj; }); }
实现方式二:使用map + Object.fromEntries(更简洁)
function toObject(arr) { return arr.map(subArr => // 将子数组转为键值对数组,再直接转换为对象 Object.fromEntries(subArr.map((key, index) => [key, index.toString()])) ); }
验证效果
输入示例:
let multiArr = [["r", "s", "p"], ["w", "u", "i"], ["a", "t", "g"]]; console.log(toObject(multiArr));
输出结果:
[ { r: "0", s: "1", p: "2" }, { w: "0", u: "1", i: "2" }, { a: "0", t: "1", g: "2" } ]
内容的提问来源于stack exchange,提问作者Julian
相关产品推荐
相关产品推荐

