JavaScript算法练习:数组分割算法
数组分割算法
把一个数组arr按照指定的数组大小size分割成若干个数组块。
例如:chunk([1,2,3,4],2)=[[1,2],[3,4]];
chunk([1,2,3,4,5],2)=[[1,2],[3,4],[5]];
Answer:
function chunk(arr, size) {
var len = parseInt(arr.length / size); //数组的长度除于指定的size得到一个整数。
var remain = arr.length % size; //数组的长度除于指定的size取余
var a = [],
count = 1,
sot = remain > 0 ? len + 1 : len; //sot为新数组的长度
for (var f = 1; f <= sot; f++) {
var start = size * (f - 1); //数组一般从0开始。
var end = (f > len) ? ((f - 1) * size + remain) : f * size;
//结束是按size,就是一个数学逻辑式。如果f>len,一般就是最后一次循环,只需要用前面的加上最后余的数,如果没有或没有余数,就直接f*size就是结束的点。
var mylocates = arr.slice(start, end); //slice() 方法可从已有的数组中返回选定的元素。
a.push(mylocates);
}
return a;
}
chunk(["a", "b", "c", "d"], 2);
THE END