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

JavaScript数组中移除start与end属性反向匹配对象的实现方案

实现方案

核心思路

  • 遍历数组时为每个对象的start和end生成统一唯一标识:将两个属性值按字典序排序后拼接,正反向配对会生成完全相同的标识
  • 借助reduce的累加器同时存储已出现的标识集合、以及符合要求的结果数组
  • 每次遍历时判断当前配对的标识是否已存在,不存在则存入结果数组同时记录标识,已存在则直接跳过

代码实现

const arr = [
  { start: 'Nebraska', end: 'Kentucky' },
  { start: 'Montana', end: 'New York' },
  { start: 'Wyoming', end: 'California' },
  { start: 'California', end: 'Wyoming' },
  { start: 'New Hampshire', end: 'Ohio' },
]

const filteredArr = arr.reduce((acc, item) => {
  // 生成统一标识,正反向配对标识相同
  const pairKey = [item.start, item.end].sort().join('_');
  if (!acc.existedPairs.has(pairKey)) {
    acc.existedPairs.add(pairKey);
    acc.result.push(item);
  }
  return acc;
}, { existedPairs: new Set(), result: [] }).result;

输出结果

打印filteredArr可得到符合要求的数组:

[
  { start: 'Nebraska', end: 'Kentucky' },
  { start: 'Montana', end: 'New York' },
  { start: 'Wyoming', end: 'California' },
  { start: 'New Hampshire', end: 'Ohio' }
]

注意事项

如果start或end的取值可能包含你选用的分隔符,可以改用JSON.stringify生成唯一键,避免键冲突:

const pairKey = JSON.stringify([item.start, item.end].sort());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:12:00