_chunk(array,[size=1]
2023-03-17 本文已影响0人
rainy66
chunk()方法是将数组中的元素进行分块,每一块为一个数组,最终返回由每个块组成的二维数组
例子
_.chunk(['a', 'b', 'c', 'd'], 2);
// => [['a', 'b'], ['c', 'd']]
_.chunk(['a', 'b', 'c', 'd'], 3);
// => [['a', 'b', 'c'], ['d']]
根据loash官网的chunk方法自己写一个同样功能的方法
// let array = ['a','b','c','d'];
// let size = 3;
//slice()提取字符串的一部分并返回提取的部分
//slice,
function chunk(arr,size) {
//获取数组的长度,如果arr为null,length取为0,则取arr.length
let length = arr == null ? 0 : arr.length;
size = Math.max(size,0); //如果size小于0,按0处理
if(!length || size < 1) {
return []
}
let num = Math.ceil(length/size);
let newArr = [];
//循环切割数组并push到新数组newArr中
//num也代表外层数组需要包含几个内层数组
for(let index = 0; index < num; index++) {
//每个分割数组的开始下标值和最后下标值
let start = index * size;
// let end = (start + num) > length ? length : (start + num);
let end = (index + 1) * size;
let tmpArr = arr.slice(start,end);
newArr.push(tmpArr)
}
return newArr;
}
console.log(chunk(['a','b','c','d'],3));
总结:花的时间比较久,刚开始输入size=1时是不正确的,因为没有想明白外层数组包含了几个内层数组,搞成了index < size; 没有很清楚的知道循环中每个分割数组的开始下标和最后下标值该怎么算