JavaScript之把一个数组按照一定长度分成N份

/**
 * 拆分数组
 * @param {Array} arr 原数组
 * @param {Number} len 拆分长度
 * @returns {Array}
 */

1、for循环 + slice

function subGroup(arr, len) {
  var newArr = [];
  for(var i = 0; i < arr.length; i += len){
    newArr.push(arr.slice(i, i + len));
  }
  return newArr;
}

2、while循环 + slice

function subGroup(arr, len) {
  let idx = 0;
  let newArr = [];
  while(idx < arr.length) {
    newArr.push(arr.slice(idx, idx += len));
  }
  return newArr;
}

3、while循环 + splice

function subGroup(arr, len) {
  var cloneArr = arr.concat();
  var newArr = [];
  while(cloneArr.length) {
    newArr.push(cloneArr.splice(0, len));
  }
  return newArr;
}

4、forEach循环 + %

function subGroup(arr, len) {
  var newArr = [];
  arr.forEach(function(item, i) {
    if(i % len === 0) {
      newArr.push([]);
    }
    newArr[newArr.length - 1].push(item);
  });
  return newArr;
}

5、forEach循环 + /

function subGroup(arr, len) {
  var newArr = [];
  var b;
  arr.forEach(function(item, index) {
    var a = Math.floor(index / len);
    if (b !== a) {
      b = a;
      newArr[a] = new Array();
    }
    newArr[a].push(item);
  });
  return newArr;
}

6、for循环 + for

function subGroup(arr, len) {
  var newArr = [];
  var b = [];
  var k = 0;
  for (var i = 0; i < arr.length; ++i) {
    if (i % len == 0) {
      b = [];
      for (var j = 0; j < len; ++j) {
        if(arr[i+j] == undefined) {
          continue;
        } else {
          b[j] = arr[i+j];
        }
      }
      newArr[k] = b;
      k++;
    }
  }
  return newArr;
}

7、reduce循环 + %

function subGroup(arr, len) {
  return arr.reduce((newArr, cur, index) => {
    var currentArr = newArr[newArr.length - 1];
    if(index % len === 0) {
      newArr.push([cur]);
    } else {
      currentArr.push(cur);
      newArr[newArr.length - 1] = currentArr;
    }
    return newArr;
  }, []);
}

最后调用方法:

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
var newArr = subGroup(arr, 5);
console.log(newArr); // [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]

 

 

posted @ 2021-09-14 16:40  阿清吖  阅读(2089)  评论(0)    收藏  举报