先看一下基本用法
将数组(array)拆分成多个 size 长度的区块,并将这些区块组成一个新数组。 如果array 无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块。
var arrayList=[1,2,3,4,5,6,7];
console.log(arrayList);//[1,2,3,4,5,6,7];
console.log(_.chunk(arrayList,3)); //[[1,2,3],[4,5,6],[7]]
我们先看一下lodash的代码然后一行一行解读
function chunk(array, size) {
size = Math.max(size, 0)
const length = array == null ? 0 : array.length
if (!length || size < 1) {
return []
}
let index = 0
let resIndex = 0
const result = new Array(Math.ceil(length / size))
while (index < length) {
result[resIndex++] = slice(array, index, (index += size))
}
return result
}
}
首先Math.max() 方法可返回两个指定的数中带有较大的值的那个数,然后判断数组==null,如果数组等于null或者长度小于1返回空数组
let index = 0
let resIndex = 0
const result = new Array(Math.ceil(length / size))
Math.ceil() 对一个数进行上舍入;Math.ceil(1.4)=2
let index = 0
let resIndex = 0
const result = new Array(Math.ceil(length / size))
接下来就是循环判断最后把result返回
i++和++i的区别
var i = 1;
var a = i++; //a = 1; 此时i为2,但赋给a的是1
var b = ++i; //b = 3
while (index < length) {
result[resIndex++] = slice(array, index, (index += size))
}
return result