JS 如何多个一维Array 竖向拼成新的二维Array
思否 问答 已采纳 👍 3 含 AI 优化版
问题
JS 如何多个一维Array 竖向拼成新的二维Array
由大模型辅助整理,保留原意,优化结构与可读性。
问题概述
有多个长度相同的一维数组,希望按“列”方向拼接成一个二维数组(即取每个数组相同下标的元素组成一组)。
涉及技术
JavaScript Array.prototype.map
期望结果
得到形如 [[a[0], b[0], c[0]], [a[1], b[1], c[1]], ...] 的二维数组。
回答
原始回答
a = [1,2,3,4,5]
b = [11,22,33,44,55]
c = [111,222,333,444,555]
a.map((v,i)=>[a,b,c].map(v=>v[i]))没难度,来下一题
AI 优化 · 回答整理
解答思路
以任意一个数组的下标作为基准,遍历该下标,再从每个原数组中取出对应下标的元素,组成新的一维数组,最终汇总成二维数组。
示例代码
const a = [1, 2, 3, 4, 5];
const b = [11, 22, 33, 44, 55];
const c = [111, 222, 333, 444, 555];
const result = a.map((_, i) => [a, b, c].map((arr) => arr[i]));
console.log(result);
// [[1, 11, 111], [2, 22, 222], [3, 33, 333], [4, 44, 444], [5, 55, 555]]
详细说明
- 外层
a.map((_, i) => ...)只是借用a的长度来遍历下标i,实际值本身没有用到。 - 内层
[a, b, c].map((arr) => arr[i]):对每一个数组取第i项,组成一个新的一维数组,也就是「竖着切一列」。 - 这种写法本质上是矩阵的按列转置(transpose),如果数组数量或长度是动态的,也可以写成更通用的
transpose(matrix)工具函数。
小结
利用嵌套 map 按下标取值,是将多个等长一维数组按列拼接成二维数组最简洁的写法。
由大模型辅助整理,保留原意,补充结构与代码格式。
回答转载自 SegmentFault