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

JS Round Robin Cyclic Algorithm数组实现输出null值如何修复

问题原因

出现null值是数组索引越界导致的:
你参考的轮询算法用的是1-based的编号逻辑,直接套用到JS的0-based数组时,索引计算多偏移了1位,当计算出的索引超过数组最大下标时,访问结果为undefined,JSON序列化时会被转换为null。

修复后的代码
function tournament (n) {
  let pairs = [];
  const k = n.length
  // 若参与人数为奇数,可自行补充轮空位逻辑后再运行
  if (k % 2 !== 0) return pairs

  for (let r=1; r<k; r++) {
    for (let i=1; i <= k/2; i++) {
      if (i==1) {
        // 修正索引偏移:把原有+2改为+1
        pairs.push([n[0], n[(k-1+r-1) % (k-1) + 1]]);
      } else {
        // 两处索引计算的+2都修改为+1
        pairs.push([n[(r+i-2) % (k-1) + 1], n[(k-1+r-i) % (k-1) + 1]]);
      }
    }
  }
  
  return pairs
}

console.log(JSON.stringify(tournament([1,2,3,4,5,6]), null, 2))
验证效果

修复后运行代码会输出5轮完整配对,每轮3组,所有元素仅和其他元素配对一次,完全符合循环赛轮询规则,不会再出现null值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:45:02