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

JavaScript中移除嵌套数组重复元素的最优方法是什么?

嵌套数组去重解决方案

方法1:JSON序列化 + Set

利用JSON.stringify将子数组转为字符串(解决引用类型无法直接比较的问题),通过Set的唯一性去重后,再转回数组:

let array = [
  [402457.9590403921, 4621707.254796494],
  [402457.9590403921, 4621707.254796494],
  [402457.9590403921, 4621707.254796494],
  [402442.9590403921, 462145.254796494],
  [402442.9590403921, 462145.254796494],
];

const uniqueArray = Array.from(new Set(array.map(item => JSON.stringify(item)))).map(str => JSON.parse(str));
console.log(uniqueArray);

方法2:Reduce + Map(高效遍历)

遍历数组时用Map记录已处理过的子数组,避免重复添加:

let array = [
  [402457.9590403921, 4621707.254796494],
  [402457.9590403921, 4621707.254796494],
  [402457.9590403921, 4621707.254796494],
  [402442.9590403921, 462145.254796494],
  [402442.9590403921, 462145.254796494],
];

const map = new Map();
const uniqueArray = array.reduce((acc, item) => {
  const key = JSON.stringify(item);
  if (!map.has(key)) {
    map.set(key, true);
    acc.push(item);
  }
  return acc;
}, []);
console.log(uniqueArray);

注意事项

上述方法基于JSON.stringify实现子数组的唯一性判断,仅适用于子数组元素为可序列化类型(如数字、字符串、普通对象等)的场景。如果子数组包含函数、Symbol等不可序列化类型,需要自定义比较逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 14:15:48