javascript二维数组转置_js怎么将一个二维数组转换成对象?
这不就是一个二重循环的事儿吗?var arr = [["num1", "num2", "num3", "num4"],["1", "2", "3", "4"],["1", "2", "3", "4"],["1", "2", "3", "4"],["1", "2", "3", "4"]];var keys = arr.shift();const result = keys.reduce((obj,
这不就是一个二重循环的事儿吗?
var arr = [
["num1", "num2", "num3", "num4"],
["1", "2", "3", "4"],
["1", "2", "3", "4"],
["1", "2", "3", "4"],
["1", "2", "3", "4"]
];
var keys = arr.shift();
const result = keys.reduce((obj, key, i) => {
obj[key] = arr.map(a => a[i]);
return obj;
}, {});
console.log(result);
10月16日补充说明:
前提是,大数据中每个小数组的长度是一样的(如果不一样需要做容错处理),然后把这个长度取出来作为大循环的长度。之所以这样做,是因为把结果和源数据都看作矩阵的话,它们之间是个转置的关系。
接下来,大循环只能从 1 开始,而不能从 0 开始,因为第 0 项是 key,后面的各项组合起来才是 value。这就是上面把 keys 单独取出来的原因(按正常逻辑是转置后取,对这个问题来说,转置前取更方便,而后取了之后,后面的部分就可以从 0 开始索引了)
剩下的事情就简单了,用个循环把 value 拼出来就好。
上面的代码采用了 reduce 和 map,整个过程实际是把转置和处理混在一起的。建议你自己思考一下如何按逻辑一步步来处理,不考虑优化整合的问题,用一个二重循环把它实现出来(也就是这段说明提到的思路),然后自己给自己回答个。
更多推荐

所有评论(0)