JavaScript一维数组转二维数组

Posted 奥特曼 

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript一维数组转二维数组相关的知识,希望对你有一定的参考价值。

   [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));

 

以上是关于JavaScript一维数组转二维数组的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript一维数组转二维数组

JavaScript基础---一维数组转二维数组

JS二维数组转一维数组

js中 把二维数组转成一维数组

PHP:数组——二维转一维,二维转三维,将特定的数据作为键名

JS 数值操作 一维数组转二维数组快捷操作