首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js 两个数组去重

在 JavaScript 中,对两个数组进行去重可以通过多种方法实现。以下介绍几种常见的方法及其原理:

方法一:使用 Set 和 展开运算符 (...)

Set 是 ES6 引入的数据结构,具有自动去重的特性。通过将两个数组合并后转换为 Set,再转换回数组即可实现去重。

代码语言:txt
复制
const array1 = [1, 2, 3, 4];
const array2 = [3, 4, 5, 6];

const combinedArray = [...new Set([...array1, ...array2])];

console.log(combinedArray); // 输出: [1, 2, 3, 4, 5, 6]

优势:

  • 简洁明了,代码量少。
  • 性能较好,适用于大多数场景。

方法二:使用 filterindexOf

通过遍历合并后的数组,利用 filter 方法和 indexOf 判断元素是否首次出现。

代码语言:txt
复制
const array1 = [1, 2, 3, 4];
const array2 = [3, 4, 5, 6];

const combinedArray = [...array1, ...array2];
const uniqueArray = combinedArray.filter((item, index) => {
  return combinedArray.indexOf(item) === index;
});

console.log(uniqueArray); // 输出: [1, 2, 3, 4, 5, 6]

优势:

  • 兼容性好,适用于不支持 Set 的旧环境。

方法三:使用对象属性去重

利用对象的键名唯一性来去重。

代码语言:txt
复制
const array1 = [1, 2, 3, 4];
const array2 = [3, 4, 5, 6];

const combinedArray = [...array1, ...array2];
const uniqueArray = Object.keys(combinedArray.reduce((acc, item) => {
  acc[item] = true;
  return acc;
}, {})).map(Number);

console.log(uniqueArray); // 输出: [1, 2, 3, 4, 5, 6]

优势:

  • 对于处理大量数据时性能表现较好。

应用场景

  • 数据合并:当需要合并两个数据源且确保数据唯一性时。
  • 去重处理:在前端展示数据前进行去重,避免重复显示。
  • 数据处理:在数据分析和处理过程中,去除重复项以获得准确结果。

可能遇到的问题及解决方法

  1. 性能问题
    • 当处理非常大的数组时,某些方法可能会变得缓慢。
    • 解决方法:使用更高效的方法,如 Set 或对象属性去重,这些方法在处理大数据量时性能更好。
  • 数据类型问题
    • 如果数组中包含不同类型但值相同的元素(如数字 1 和字符串 "1"),上述方法会将它们视为不同的元素。
    • 解决方法:在去重前统一数据类型,或在比较时进行类型转换。
  • 顺序问题
    • 某些方法可能会改变原数组中元素的顺序。
    • 解决方法:使用 Setfilter 方法,这些方法会保留元素的原始顺序。

通过以上方法和注意事项,可以有效地对两个数组进行去重操作,确保数据的唯一性和准确性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

javascript数组去重set方法_js数组去重api

数组去重的几种方法 1.遍历数组法 ---- 这是最简单的数组去重方法,实现思路:新建一新数组,传入要去重的数组,遍历该数组,若值不在新数组中则加入该数组;需要注意点:判断值是否在数组的方法“indexOf...-1){ new_arr.push(val); } }); return new_arr; } 2.对象键值对法 ---- 思路:新建一对象以及数组...,遍历传入的数组,判断值是否为js对象的键,若不是则新增键值,并放入数组中;需要注意的地方:判断是否为js对象键时,会自动对传入的键toString(); function removeDup2...; new_arr.push(val); } } return new_arr; } 缺点:无法真正区分两个对象...false : (obj[type] = item); } ) } // 可去除undefined, NaN, Object重复项 4.ES6,Set和Map去重 ---

2.6K20
  • js实现数组去重操作

    js数组去重一般两种方法,一种是通过循环判断的方式来去重,另一种方式是通过ES6标准的set集合来实现去重,下面分别来看代码。...循环判断去重算法 算法的实现原理就是通过两重循环,内部循环判断是否相等,如果相等将外层循环的循环变量+1,这样减少了循环的次数,之后当内部循环结束一次之后arr[i]则为第一个与前一个元素不相等的值。...然后赋值给一个新的数组。重复操作即可完成去重。...} var arr=["red","red","1","5","2","2","1"]; var theArr = delRepeat(arr);//此时theArr的值为:red,5,2,1 set去重...set的方式去重就相当简单了,因为在set这种数据结构中是不允许出现相同的值得,所以利用这一特性可以方便的实现数组去重。

    1.9K10

    超实用的JS数组去重

    一、简单的去重方法,利用数组indexOf方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */...let array = [1, 2, 3, 2, 2, 3, 4, 3, 4, 5]; // 数组去重 function unique(ary) { let newAry = []; for.../*==数组去重==*/ let ary = [1, 2, 3, 2, 2, 3, 4, 3, 4, 5]; /* * 1.依次拿出数组中的每一项(排除最后一项:最后一项后面没有需要比较的内容)...;//=>删除后不能让k累加了 k--;//=>删除后先减减,在加加的时候相当于没加没减 } } } console.log(ary); 三、对象键值法去重...let ary = [1, 2, 2, 2, 1, 2, 3, 2, 3, 2, 1], console.log(Array.from(new Set(ary))); //=>基于ES6 SET实现去重

    2.1K21

    JS 数组去重的多种方法

    普通方法数组去重 3. filter + indexOf 4. ES6 的 new Set() 5. 需要注意的问题 1....前言 本文提供两个数组变量供测试使用 const array = ['html', 'css', 'js', 'css']const resArr = ['html', 'css', 'css', [1...普通方法数组去重 下面列举几种数组去重的方法思路都一样: 遍历数组,将数组元素添加到新数组中,新数据中已有该元素,则不添加到新数组 // for + indexOfconst res = [];for...indexOf() 方法判断元素首次出现的下标是否为当前遍历的下标 // ['html', 'css', 'js']const res = array.filter((item, index) => array.indexOf...需要注意的问题 当数组中存在引用类型的元素时,引用类型元素无法保持唯一性 const resArr = ['html', 'css', 'css', [1], [1]]// ['html', 'css'

    1.3K20

    (转)JS算法系列-数组去重

    1.遍历数组法 最简单的去重方法, 实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中;注意点:判断值是否在数组的方法“indexOf”是ECMAScript5 方法,IE8以下不支持,...需多写一些兼容低版本浏览器代码,源码如下: // 最简单数组去重法 function unique1(array){ var n = []; //一个新的临时数组 //遍历当前数组 for(...对象以及新数组,遍历传入数组时,判断值是否为js对象的键,不是的话给对象新增该键并放入新数组。...注意点: 判断是否为js对象键时,会自动对传入的键执行“toString()”,不同的键可能会被误认为一样;例如: a[1]、a["1"] 。解决上述问题还是得调用“indexOf”。..."sort"方法排序结果不怎么靠谱,但在不注重顺序的去重里该缺点毫无影响。

    1.8K90

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券