素材巴巴 > 程序开发 >

JavaScript一维数组转二维数组

程序开发 2023-09-12 18:50:54

   [1, 2, 3, 4, 5, 6, 7, 8]      实现效果      [[1, 2, 3, 4], [5, 6, 7, 8]]

 1. slice截取

        function fn(arr, num) {let newArr = []const total = Math.ceil(arr.length / num)console.log(total);for (let i = 0; i < total; i++) {a = arr.slice(i * num, (i + 1) * num)newArr.push(a)}return newArr}let arr = [1, 2, 3, 4, 5, 6, 7, 8]console.log(fn(arr, 4));

newArr 用来接收转换的二维数组

total 代表外层数组需要包含几个内层数组

slice进行分隔  第一个参数 开始截取的索引 第二个参数 结束的索引 

把每次截取的数组添加到newArr里

2.splice

先来学习一下深拷贝高级的代码

JSON.parse(JSON.stringify(obj||arr))
        function fn(arr, num) {let newArr = []let copyArr = JSON.parse(JSON.stringify(arr))const total = Math.ceil(arr.length / num)console.log(total);for (let i = 0; i < total; i++) {a = copyArr.splice(0, num)newArr.push(a)}return newArr}let arr = [1, 2, 3, 4, 5, 6, 7, 8]console.log(fn(arr, 4));

思路大致一致 只不过这次拿到的是splice的返回值 

注意直接splice拿到返回值 会改变原数组 注意哦 !!   相当于把原数组全部删除了,任何情况下最好都不要删除原数组,因为原数组可能还有别的地方要用到哈!

3. 遍历判断

   function fn(arr, num) {let newArr = []arr.forEach((it,idx) => {const total = Math.floor(idx / num) //判断当前在第几个数组内if(!(newArr[total])){ //判断当前是否有数组newArr[total]=[]  //如果没有赋值一个空}newArr[total].push(it) // 并且把当前对应的索引里面进行添加});return newArr}let arr = [1, 2, 3, 4, 5, 6, 7, 8]console.log(fn(arr, 4));

 


标签:

上一篇: ajax发送请求的数据类型 下一篇:
素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。