javascript - 通过 JS 中所需的组大小将一维数组转换为多维数组的更好方法

标签 javascript arrays multidimensional-array

我是 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/

相关文章:

javascript - angularjs运行命名函数

javascript - 如何通过拆分字符串将数组转换为对象?

json - 如何使用 angular2 react 形式构建嵌套数组?

c# - 在 asp.net 网站的 javascript 中提醒俄语文本

javascript - 如何先追加,然后在 jquery 中运行 ajax?

javascript - 在 jsx 中呈现列表时的多次返回

javascript - addClass 到数组的最后一项

arrays - 使用索引值的环移

java-如何管理多个数据列表-在单个变量中-轻松访问每个列表

c - 设置二维数组值时读取字符串字符时出错