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);
}
### 如何忽略Sass `@import`规则已弃用的警告 在Dart Sass版本更新过程中,确实存在一些功能逐渐被标记为过时并最终移除的情况。对于`@import`规则,在较新的Dart Sass版本中已被视为不推荐使用的特性[^1]。 为了抑制有关`@import`规则即将废弃的具体警告信息而不影响其他正常的编译过程,可以采取如下措施: #### 方法一:通过命令行参数控制 如果是在命令行环境中运行Dart Sass,可以通过传递特定选项来关闭这些警告消息。具体来说就是使用`--quiet-deps`标志位启动程序: ```bash sass --quiet-deps input.scss output.css ``` 此方法适用于希望临时静默处理依赖项中的警告而不需要修改源码的情形。 #### 方法二:配置文件设置 当项目规模较大或者需要长期稳定地消除此类警告时,则可以在项目的根目录下创建名为`.sassrc.json`或`.sassrc.yml`这样的配置文件,并加入相应的字段以禁用警告输出。例如JSON格式下的实现方式如下所示: ```json { "quietDeps": true } ``` 这种方法的好处在于它能够作用于整个工作区内的所有Sass文件,无需每次执行都手动指定额外参数。 需要注意的是,虽然上述两种手段都可以有效地阻止`@import`相关的弃用通知显示出来,但从长远来看还是建议逐步迁移到官方推荐的新模块化导入机制上去,即采用`@use`和`@forward`语句替代旧版语法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值