9. JS编程之查找数组中重复的元素

这篇博客探讨了如何在JavaScript中找到数组中的重复元素。通过使用双重循环、数组方法如forEach、map和filter,以及通过对数组排序来检查相邻元素,提供了多种解决方案。文章还提到了效率问题,并推荐了一种利用Set直接获取重复元素的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述
找出数组 arr 中重复出现过的元素
示例:

//输入
[1, 2, 4, 4, 3, 3, 1, 5, 3]
//输出
[1, 3, 4]

思路:新创建一个空数组储存结果,遍历原数组找出重复出现的元素,然后判断结果数组中是否存在该元素,不存在就push进去,存在就跳过判断下一个。
遍历数组

  • 可用两个for循环:用arr[i] ==arr[j]判断是否存在重复元素。
  • 也可用forEach()和for…in,map(),filter():用arr.indexOf(elem) ==arr.lastIndexOf(elem)判断查找的第一个元素和最后一个元素是否是同一个,进而判断重复元素是否存在。

判断结果数组中是否已存在元素

  • 用结果数组Arr.indexOf(elem)===-1来判断不存在。
  • 用原数组arr.indexOf(elem)===index,表示搜索到的第一个元素就是当前位置index的元素,证明结果中没有该元素。

方法一
利用两个for循环+Arr.indexOf(elem)===-1实现.

function duplicates(arr) {
    var Arr = [];
    for(let i=0; i<arr.length; i++ ){
        for(let j=i+1; j<arr.length; j++){
            if(arr[i]===arr[j] && Arr.indexOf(arr[j])===-1){
                Arr.push(arr[i]);
            }
        }
    }
    return Arr;
}

方法二
利用forEach()+Arr.indexOf(elem)===-1实现。

function duplicates(arr) {
    var Arr = [];
    arr.forEach((elem)=>{
        if(arr.indexOf(elem) !== arr.lastIndexOf(elem) && Arr.indexOf(elem) === -1){
            Arr.push(elem);
        }
    });
    return Arr;
}

方法三
前面两种方法每次都会将当前元素与后面的元素比较一遍,比较费时,所以可以先用arr.sort()对原数组进行排序,然后比较当前元素和后一个元素是否相等即可判断重复元素。

function duplicates(arr) {
    var a = arr.sort();
    var Arr = [];
    arr.forEach((elem,index)=>{
        if(elem === arr[index+1] && Arr.indexOf(elem)=== -1){
            Arr.push(elem);
        }
    })
    return Arr;
}

方法四
直接用arr.filter(),直接返回结果为true的元素组成的新数组,通过arr.indexOf(elem)!==arr.lastIndexOf(elem)(是重复元素)和arr.indexOf(elem)===index(结果数组中没有该元素)来判断。

function duplicates(arr) {
    return arr.filter((e,i) => arr.indexOf(e)!==arr.lastIndexOf(e) && arr.indexOf(e)===i);
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值