javascript 从一维数组到二维数组
From 1d array to 2d array in javascript
数组[123456789012345678901234567890]
结果:[[123123123] [456456456] [890890890]]
拼接数组以获得上述结果的最简单方法是什么。我知道如何获得:
[[1234567890][1234567890][1234567890]]
但获取方式并不简单:
[[123123123] [456456456] [890890890]]
你的数据有一个小问题。输出不包含“7”位。我猜这是一个错误。
假设初始数据为:[1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9]
.
输出:[[1,2,3,1,2,3,1,2,3],[4,5,6,4,5,6,4,5,6],[7,8,9,7,8,9,7,8,9]]
.
这样做就可以了:
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9]
arr = arr.reduce((acc, cur, i) => {
idx = Math.floor((i / 3) % 3)
acc[idx].push(cur)
return acc
}, [[], [], []])
console.log("arr", arr)
几个要点:
Math.floor((i / 3) % 3)
根据数组位置获取正确索引
[[], [], []]
:这是累加器的初始条件acc
。很多人不知道,但它可以是任何对象,不一定是 0
或 []
.
数组[123456789012345678901234567890] 结果:[[123123123] [456456456] [890890890]]
拼接数组以获得上述结果的最简单方法是什么。我知道如何获得: [[1234567890][1234567890][1234567890]]
但获取方式并不简单: [[123123123] [456456456] [890890890]]
你的数据有一个小问题。输出不包含“7”位。我猜这是一个错误。
假设初始数据为:[1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9]
.
输出:[[1,2,3,1,2,3,1,2,3],[4,5,6,4,5,6,4,5,6],[7,8,9,7,8,9,7,8,9]]
.
这样做就可以了:
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9]
arr = arr.reduce((acc, cur, i) => {
idx = Math.floor((i / 3) % 3)
acc[idx].push(cur)
return acc
}, [[], [], []])
console.log("arr", arr)
几个要点:
Math.floor((i / 3) % 3)
根据数组位置获取正确索引[[], [], []]
:这是累加器的初始条件acc
。很多人不知道,但它可以是任何对象,不一定是0
或[]
.