【译】JS基础算法脚本:数组分割

需求

给出一个数组,按长度要求分割成多维数组

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, ...)

有其他好的方法或思路的道友,不妨在沙发区神交一番。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值