You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript拆分数组为子数组(每子数组和不超指定值)的问题排查

问题原因

你的代码存在两个核心错误:

  • 引用共用问题:将temp推入result时,存入的是数组的引用,后续你用temp.length=0清空数组时,会同步修改result中已经存入的数组内容,导致前面攒的子数组被清空,最终只剩下最后存入的[4]
  • 循环收尾遗漏:循环结束后,最后一轮攒在temp里的子数组没有被推入result
修正方案

把清空temp的逻辑改为重新赋值新空数组,并且循环结束后追加最后一个子数组即可,修正后代码如下:

const arr = [10,10,10,10,10,10,10,10,10,4,4,4]
const result = []
let sum = 0
let temp = []
for(let i=0; i<arr.length; i++){
  if(sum + arr[i] <= 100){
    sum += arr[i]
    temp.push(arr[i])
  }else{
    result.push(temp)
    sum = 0
    // 改为重新赋值空数组,不再复用之前的数组引用
    temp = []
    temp.push(arr[i])
    sum += arr[i]
  }
}
// 循环结束后把最后一组推入结果
result.push(temp)
console.log(result) // 输出 [[10,10,10,10,10,10,10,10,10,4,4],[4]]

内容的提问来源于stack exchange,提问作者user11328958

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:15:01