一维数组构建指定个数的二位数组

前言

最近,在写着小程序,对数据操作比较频繁,后端返回的数据对于我构建一个swiper不是那么的理想,所以自己就写了一个方法,用于构建一个二维数组来构建单个swiper-item多图的轮播

/** 
 * 一维数组生成以subArrayNum的二维数组 
 * @param {Array} arr  
 * @param {Number} subArrayNum  
 */  
function getMatrix(arr, subArrayNum) {  
    // 定义一个数组,长度为原数组的总长度除以subArrayNum向上取整  
    var res = new Array(Math.ceil(arr.length / subArrayNum));  
    // 遍历该数组  
    for (let i = 0; i < res.length; i++) {  
        // 令数组每一个值都为空数组,即生成二维数组  
        res[i] = new Array();  
        // 为二维数组数据设置为空字符串  
        for (let j = 0; j < i % subArrayNum; j++) {  
            res[i][j] = '';  
        }  
    }  
    // 给二维数组添加数据  
    for (let i = 0; i < arr.length; i++) {  
        res[parseInt(i / subArrayNum)][i % subArrayNum] = arr[i];  
    }  
    return res;  
}  


/**
 * 返回一个根据subArrayNum的二维数组
 * @param {Array} arr => 一维数组
 * @param {Number} subArrayNum => 每组元素的个数
 */
function chunk(arr, subArrayNum) {
    var result = [];
    for (var i = 0; i < arr.length; i += subArrayNum) {
        result.push(arr.slice(i, i + subArrayNum));
    }
    return result;
}

测试我们写的方法:

var arr = [1, 2, 3, 4, 5, 6];  
getMatrix(arr, 2);// [[1,2],[3,4],[5,6]]  
chunk(arr, 2);// [[1,2],[3,4],[5,6]] 
这是我的原创文章,如果觉得不错,可以打个赏~
0%