获取一个数组中的连续数字

现在想把一个数组根据指定大小进行分割,
chunk(arr, 10)
把数组分割成每块总和小于等于10,请教各位大神

let arr = [15,1,3,4,3,4,10,7,19]


function chunk(arr, sum) {

}
// [[15], [1, 3, 4], [3, 4], [10], [7], [19]]
阅读 3.4k
3 个回答
新手上路,请多包涵
    var arr = [15,1,3,4,3,4,10,7,19];
    
    function chunk(arr, critical) {
        var result = [];
        var sum = 0;
        var temp = [];
        arr.forEach(function(item) {
            if(!temp.length) {
                temp.push(item);
                sum = item;
            } else {
                if(sum > critical - item) {
                    result.push(temp);
                    sum = item;
                    temp = [item];
                } else {
                    sum += item;
                    temp.push(item);
                }
            }
        });
        result.push(temp);
        return result;
    }
    var result = chunk(arr, 10);
    console.log(result);
let arr = [15, 1, 3, 4, 3, 4, 10, 7, 19];
let chunk = arr.reduce((arr, num) => {
  const n = arr[arr.length - 1];
  if (n.length && n.reduce((a, b) => a + b, num) > 10) {
    arr.push([num]);
  } else {
    n.push(num);
  }
  return arr;
}, [[]]);
console.log(chunk);
    var arr = [15,1,3,4,3,4,10,7,19],         
        o = [0],
        newArr = [];
    arr.reduce(function (p, v, index) {
        p + v > 10 ? o.push(index) : false;
        return p + v > 10 ? v : p + v;
    });
    for(var i = 0; i < o.length; i++) {
        newArr.push(arr.slice(o[i], o[i+1]))
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题