javascript - 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
或[]
。
推荐阅读
- r - If-Else 循环与 Ifelse(); 它们有何不同以及如何给出相同的结果
- odoo - 在 Odoo 11 中打开和关闭库存
- c# - 数据读取器与指定的“StoredProcedureReturn”不兼容
- ruby-on-rails - Rails will_paginate 如何生成完整的url?
- python-3.x - ModuleNotFoundError:没有名为“pystruct.models.utils”的模块
- angular - 无法以角度 6 导出到剑道网格中的 excel 整个网格数据
- c# - C# WPF 风格的 SaveFileDialog
- go - 获取完整的 UTC 偏移格式
- ios - 具有固定宽度的居中按钮会中断 NSLayoutConstraint
- xmlhttprequest - 从 facebook 加载 XMLHttpRequest 即时游戏返回空结果,即使我在从服务器获取数据之前刚刚保存了数据