问题:
猴子吃香蕉, 分割数组
(猴子吃香蕉可是掰成好几段来吃哦)
把一个数组arr
按照指定的数组大小size
分割成若干个数组块。
例如:chunk([1,2,3,4],2)=[[1,2],[3,4]];
chunk([1,2,3,4,5],2)=[[1,2],[3,4],[5]];
思路:
利用数组的Array.slice()方法和Array.push()方法来解决。
后者就不介绍了,前者的话我容易忘记,所以笔记一下。
语法:
arr.slice();
// [0, end]
arr.slice(begin);
// [begin, end]
arr.slice(begin, end);
// [begin, end)
参数:
begin
可选
从该索引处开始提取原数组中的元素(从0开始)。
如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,
slice(-2)
表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。
如果省略 begin
,则 slice
从索引 0 开始。
end
可选
在该索引处结束提取原数组元素(从0开始)。slice
会提取原数组中索引从 begin
到 end
的所有元素(包含begin,但不包含end)。
slice(1,4)
提取原数组中的第二个元素开始直到第四个元素的所有元素 (索引为 1, 2, 3的元素)。
如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取
。 slice(-2,-1)
表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。
如果 end
被省略,则slice
会一直提取到原数组末尾。
如果 end 大于数组长度,slice 也会一直提取到原数组末尾。
slice方法有返回值,为一个含有提取元素的新数组。
代码:
function chunk(arr, size) {
// 请把你的代码写在这里
var arr_final = []; // 用来装最后结果的数组
var arr_temp = []; // 临时数组
for(var i=0;i<arr.length;i+=size){
// 分割
arr_temp = arr.slice(i,i+size);
// 装载
arr_final.push(arr_temp);
}
return arr_final;
}