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

如何移除JavaScript sum函数返回的数字和数对数组中的重复项?

解决数对去重的几种实用方法

方法一:从根源避免重复(最推荐)

不用等生成重复数对再去重,直接控制循环范围,只生成不重复的数对。

原理很简单:只要让数对里的第一个数不大于第二个数,就不会出现[3,2]这种和[2,3]重复的情况。循环时让i从0开始,到value的一半(向下取整)结束,对应的第二个数就是value - i。

代码示例:

function sum(value) {
  const pairs = [];
  // 循环到value的一半,确保i <= value - i
  for (let i = 0; i <= Math.floor(value / 2); i++) {
    pairs.push([i, value - i]);
  }
  return pairs;
}

console.log(sum(5)); // 输出 [[0, 5], [1, 4], [2, 3]]

方法二:对已生成的数对去重(转换为字符串用Set判断)

如果已经有了包含重复的数对数组,可以把每个数对转换成唯一的字符串标识,再用Set去重。比如把数对排序后转成字符串,这样[2,3]和[3,2]都会变成"2,3",Set就能识别出重复。

代码示例:

function removeDuplicates(pairs) {
  const seen = new Set();
  return pairs.filter(pair => {
    // 排序后转字符串,生成唯一key
    const key = pair.sort((a, b) => a - b).join(',');
    if (!seen.has(key)) {
      seen.add(key);
      return true;
    }
    return false;
  });
}

// 测试用的全量数对
const fullPairs = [[0,5],[1,4],[2,3],[3,2],[4,1],[5,0]];
console.log(removeDuplicates(fullPairs)); // 输出 [[0,5],[1,4],[2,3]]

方法三:直接过滤不符合条件的数对

因为重复的数对都是第一个数大于第二个数的,所以直接过滤掉这类数对即可。

代码示例:

function filterDuplicates(pairs) {
  return pairs.filter(pair => pair[0] <= pair[1]);
}

console.log(filterDuplicates(fullPairs)); // 输出 [[0,5],[1,4],[2,3]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:01:09