JavaScript 数组转化问题?

有没有什么简单方法可以将数组[11, 12, 13, 14, 22, 23, 24, 25]转化成[[11, 12, 13, 14], [22, 23, 24, 25]]?

可能问题造成了误导,应该是目前有个 M*N 元素个数的 一维数组,想要转化成 二维数组,这个二维数组应该是有 M 个元素,每个子元素都是包含 N 个元素的数组

目前使用的方式是:

const arr = beforeArr
    .reduce((pre, cur) => {
      if (pre.length === 0) {
        pre = [[cur]]
      } else {
        if (pre[pre.length - 1].length === 4) {
          pre.push([cur])
        } else {
          pre[pre.length - 1].push(cur)
        }
      }
      return pre
    }, [])
阅读 3.6k
6 个回答
function Arr(arr) {
        let left = [],
            right = [],
        mid = arr.length / 2 | 0;
        arr.forEach((v, i) => {
            i < mid ? left.push(v) : right.push(v)
        });
        return [left, right];

    }
    var arr = [11, 12, 13, 14, 22, 23, 24, 25];

    function chunk(arr, len) {
      var n = arr.concat([]),
        l = ~~( arr.length / len),
        i = 0;
      for (; i <= l; i++) {
        n.splice(i, len, n.slice(i, i + len));
      }
      return n;
    }
    console.log(chunk(arr, 3))
function getGroup(array, subGroupLength) {
  let index = 0
  const newArray = []
  while (index < array.length) {
    newArray.push(array.slice(index, index += subGroupLength))
  }
  return newArray
}

只是碰巧上次在segmentfault也看到了, 觉得封装得不错

var arr = [1,2,3,4,5,6,7,8,9,10,11,12];
var result = [],m=3,n=4;

for(var i=0;i<arr.length;i+=m){

result.push(arr.slice(i,i+m))

}
console.log(result);//[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]

lodash里面的chunk方法

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题