为了账号安全,请及时绑定邮箱和手机立即绑定

把一个数组arr按照指定的数组大小size分割成若干个数组块,我的程序运行不成功!

把一个数组arr按照指定的数组大小size分割成若干个数组块,我的程序运行不成功!

慕仰0923016 2016-10-24 17:04:02
出现Cannot read property '0' of undefined错误。。。。。。。function chunk(arr, size) {  for(var i=0,newArray=Array();i<Math.ceil(arr.length/size);i++){    for(var j=0;j<size;j++){    newArray[i][j].push(arr[j+i*size]);    }  }  return newArray;}
查看完整描述

5 回答

已采纳
?
千秋此意

TA贡献158条经验 获得超187个赞

function chunk(arr, size) {
  for(var i=0,newArray=[],temp=[]; i<Math.ceil(arr.length/size); i++){
    for(var j=0;j<size;j++){
        temp[j] = (arr[j+i*size]);
    }
    newArray[i] = [].concat(temp.includes(undefined) ? temp.slice(0, temp.indexOf(undefined)) : temp);
  }
  return newArray;
}

console.log(chunk([1,2,3,4,5,6,233,233], 3)); // => [ [1,2,3], [4,5,6], [233,233] ]


查看完整回答
1 反对 回复 2016-10-24
?
_潇潇暮雨

TA贡献646条经验 获得超225个赞

function chunk(arr, size) {
    for(var i=0,newArray=Array();i<Math.ceil(arr.length/size);i++){
        newArray[i] = Array();
        for(var j=0;j<size;j++){
            newArray[i].push(arr[j+i*size]);
        }
    }
    return newArray;
}

var arr = [1,2,3,4,5,6,7,8,9,0];
var size = 3;
var ret = chunk(arr,size);
console.log(ret);


查看完整回答
1 反对 回复 2016-10-24
?
慕函数0307879

TA贡献1条经验 获得超0个赞


function chunk(arr, size) {
    for(var i=0,newArray=Array();i<Math.ceil(arr.length/size);i++){
        newArray[i] = Array();
        for(var j=0;j<size;j++){
            newArray[i].push(arr[j+i*size]);
        }
      }
  var p=0;
     for(var k=0;k<newArray[newArray.length-1].length;k++){
       if(newArray[newArray.length-1][k]!=null){
         p++;
       }
     }
     for(var l=0;l<size-p;l++){
       newArray[newArray.length-1].pop();
     }
    return newArray;
}

楼上回答的代码有些缺陷,如果被分割的数组元素不满size时,会填充null进数组。

需要消除null才能算是正确答案。

我这么写的代码肯定很难看,不过基本的任务完成了,看楼主如何自行简化代码吧

查看完整回答
反对 回复 2017-05-10
?
文森特_

TA贡献1条经验 获得超0个赞

function chunk(arr, size) {
   // Break it up.
   var arr1 = [];
   for (var i = 0; i < arr.length; i = i + size) {
       var arr2 = arr;
       arr1.push(arr2.slice(i, i + size));
   }
   return arr1;
}

chunk(["a", "b", "c", "d"], 2);

查看完整回答
反对 回复 2016-11-22
  • 5 回答
  • 0 关注
  • 3320 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信