javascript - 无法读取未定义多维数组的属性 'push'

标签 javascript arrays

我正在尝试解决这个问题:编写一个函数,将数组(第一个参数)分成大小长度(第二个参数)的组,并将它们作为多维数组返回。例如:

chunk(['a', 'b', 'c', 'd'], 2) 

应该返回

[['a'. 'b'], ['c', 'd']]

我的代码如下:

function chunk(arr, size) {
  var newArr = [[]];
  for(i = 0; i < arr.length; i++) {
    for(j = 0; j < size; j++) {
      newArr[i].push(arr[i + j]);
    }
  }
  return newArr;
}

它给出一个错误:无法读取未定义的属性“push”。为什么会发生这种情况以及如何解决这个问题?

最佳答案

您可以使用嵌套循环来做到这一点,但为什么不采用更简单的方法并使用array.slice()

function chunk( input, size ) {
    var output = [];
    for( i = 0;  i < input.length;  i += size ) {
        output.push( input.slice( i, i + size ) );
    }
    return output;
}

关于javascript - 无法读取未定义多维数组的属性 'push',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31511627/

相关文章:

javascript - AngularJS/javascript 将日期字符串转换为日期对象

php - 当发送编码后的json到mysql reject

c++ - C++ 中的这些 extern 声明有什么区别?

php - 将一对 append 到 PHP 数组的最简单方法

c++ - 非常简单的程序通过了 VS2010 c++ 内存泄漏检查器,但在销毁所有对象后在程序结束时仍然使用更多内存?

javascript - 具有多个文件的 Google Closure Compiler SourceMap

javascript - 根据访客 IP 地址(国家/地区)将主网站重定向到子域

javascript - 制作一个弹出窗口(这是一个包含面板的 DIV - 由文本框和一个按钮组成)以仅适合( float )在( map )特定的 DIV 中

javascript - .find() 多选器不能添加prop

javascript - 如何更改CSS和JS中的css样式表?