数组如何一维变二维?

发布于 2022-09-12 01:11:17 字数 126 浏览 17 评论 0

需要将const a1= [1,11,2,22,3,33];变成const b1= [[1,11],[2,22],[3,33]];将一维的数组变成一个二维的数组,最简单高效的办法是什么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

晒暮凉 2022-09-19 01:11:17
const a1 = [1, 11, 2, 22, 3, 33];

const b1 = Array.from(
  {length: Math.ceil(a1.length / 2)},
  (v, i) => a1.slice(i * 2, i * 2 + 2),
);

console.log(b1)

比较简洁,要分割其他大小子数组只要将数字2替换成要分割的子数组数量即可
也可以像楼上直接封装成方法

const chunk = (arr, size) => Array.from(
  {length: Math.ceil(arr.length / size)},
  (v, i) => arr.slice(i * size, i * size + size),
);

const b1 = chunk(a1, 2);

console.log(b1)
<逆流佳人身旁 2022-09-19 01:11:17

最简单是直接使用 lodash.chunk
也可以实现一个简单的 chunk

const chunk = (arr, size) => arr.reduce((acc, item) => {
    let lastIndex = acc.length - 1
    let last = acc[lastIndex];

    if(!last || last.length === size) {
        last = []
        lastIndex++
    }

    last.push(item) 
    acc.splice(lastIndex, 1, last)

    return acc
}, [])

console.log(chunk([1, 11, 2, 22, 3, 33], 2))
最美的太阳 2022-09-19 01:11:17
var a1= [1,11,2,22,3,33];
var arr = [];
for(var i = 0, len = a1.length; i< len; i++){
    arr.push([a1[i], a1[++i]]);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文