需求
给出一个数组,按长度要求分割成多维数组
chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6], 3) should return [[0, 1, 2], [3, 4, 5], [6]]
chunkArrayInGroups(["a", "b", "c", "d"], 2) should return [["a", "b"], ["c", "d"]]
思路1
1.arr.splice()截取数组
2.当数组元素截取完时,停止截取,返回新数组
function chunkArrayInGroup(arr,size) {
var newArr = [];
while(arr.length>0) {
newArr.push(arr.splice(0,size));
}
return newArr;
}
chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6], 3);
思路2
1.arr.slice()截取数组
2.当数组元素截取完时,停止截取,返回新数组
function chunkArrayInGroup(arr,size) {
var newArr = [],
i=0;
while(i<arr.length) {
newArr.push(arr.slice(i,i+size));
i += size;
}
}
chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6], 3);
function chunkArrayInGroups(arr, size) {
// Break it up.
var arr2 = [];
for (var i = 0; i < arr.length; i+=size) {
arr2.push(arr.slice(i , i+size));
}
return arr2;
}
chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6], 3);
思路3
1.for循环,暂存子数组
2.到达指定长度,存入新数组
3.如有剩余元素,存入新数组
function chunkArrayInGroups(arr, size) {
var temp = [];
var result = [];
for (var a = 0; a < arr.length; a++) {
if (a % size !== size - 1)
temp.push(arr[a]);
else {
temp.push(arr[a]);
result.push(temp);
temp = [];
}
}
if (temp.length !== 0)
result.push(temp);
return result;
}
chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6,7], 3);
相关
Array.prototype.push()
- push() 方法将一个或多个元素添加到数组的末尾,并返回数组的新长度。
Array.prototype.slice()
- slice()方法返回一个从开始到结束(不包括结束)选择的数组部分浅拷贝到一个新数组对象
Array.prototype.splice()
- splice() 方法通过删除现有元素和/或添加新元素来更改一个数组的内容。
- array.splice(start, deleteCount, item1, item2, ...)
有其他好的方法或思路的道友,不妨在沙发区神交一番。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。