首页 > 解决方案 > javascript中从一维数组到二维数组

问题描述

数组 [123456789012345678901234567890] 结果: [[123123123] [456456456] [890890890]]

拼接数组以获得上述结果的最简单方法是什么。我知道如何获得:[[1234567890][1234567890][1234567890]]

但不是一个简单的方法:[[123123123] [456456456] [890890890]]

标签: javascriptarray-splice

解决方案


你的数据有一个小问题。输出不包含“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[]

推荐阅读