我是 JS 的新手,我正在研究一个问题,要求将数组(第一个参数)拆分为长度为 size(第二个参数)的组,并将它们作为多维数组返回。 我的问题适用于所有测试用例,但它建议使用数组 `push()` 方法。我尝试了很多次,但始终无法正常工作。我想我被引用的数组搞砸了。我最终为每个元素声明了一个新数组。我每次都使用更经典的深度复制每个元素。我没有回去再次尝试 `push()` 方法。必须有一种更有效的方法来做到这一点。我想写出好的代码。希望看到更好的版本。 谢谢!
function chunk(arr, size) {
var group = 0;
var counter = 0;
var even = false;
var odd = false;
if (arr.length % size === 0) {
group = arr.length / size;
even = true;
} else {
group = Math.ceil(arr.length / size);
odd = true;
}
var newArr = new Array(group);
for (var i = 0; i < group; i++) {
newArr[i] = new Array(size);
}
for (i = 0; i < group; i++) {
for (var j = 0; j < size && counter < arr.length; j++) {
newArr[i][j] = arr[counter++];
}
}
return newArr;
}
chunk(['a', 'b', 'c', 'd'], 2);
最佳答案
使用Array.prototype.slice
,函数可以写得更短:
function chunk(array, size) {
var result = []
for (var i=0;i<array.length;i+=size)
result.push( array.slice(i,i+size) )
return result
}
关于javascript - 通过 JS 中所需的组大小将一维数组转换为多维数组的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31885035/