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

JavaScript 按相邻元素detail长度和规则分块数组问题

问题根源

你原来的代码核心问题是循环增量固定为传入的size(也就是3),没有根据当前块实际取的元素数量动态调整:

  • 当你判断相邻两项满足条件取了2个元素作为一块时,i应该只+2,而不是固定+3,否则就会跳过第三个位置的元素,导致最终总元素数不对。
  • 另外原来的代码最后多套了一层数组返回,你要的结果本身直接return returnedArray 即可,不需要额外用[]包裹。

修复后的代码

function isApsChunk(rawArray, size) {
    const returnedArray = [];
    let i = 0;
    // 用while循环更方便控制动态步长
    while (i < rawArray.length) {
        // 优先判断是否满足2元素成块的条件
        if (i + 1 < rawArray.length && rawArray[i].detail.length + rawArray[i + 1].detail.length >= 11) {
            returnedArray.push(rawArray.slice(i, i + 2));
            i += 2;
        } else {
            // 不满足条件就按指定size取,剩余不足size的直接全部作为最后一块
            returnedArray.push(rawArray.slice(i, i + size));
            i += size;
        }
    }
    return returnedArray;
}
console.log(isApsChunk(isQuestions, 3))

验证效果

调用该函数传入你的示例数组,输出结果和你给出的预期结构完全一致:

  • 第一块:第0、1项,detail长度和6+8=14≥11,取2个
  • 第二块:第2、3项,detail长度和7+4=11≥11,取2个
  • 第三块:第4、5、6项,4+4=8<11,取3个
    7个元素全部处理完成,没有遗漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:15:04