【JavaScript】查找重复元素

题目描述

找出数组 arr 中重复出现过的元素
示例1

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

输出
[1, 3, 4]
解法:

function duplicates(arr) {
    
    
    var num=arr.sort();
    var xx=[];
    var i;
    for(i=0;i<arr.length;i++){
    
    
            if(arr[i]==arr[i+1]&&arr[i]!=arr[i-1])//判断是否重复,是否已经放入容器
            {
    
    
                xx.push(arr[i]);
            }
        }
    return  xx;   
}

看到另一个挺巧妙的解法,和上面的解法差不多,就是判断语句不一样:


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

其中result.indexOf(elem) == -1刚开始一直没明白,后来想了一下,害!不就是为了避免新数组中数据重复嘛,晕了,晕了。

猜你喜欢

转载自blog.csdn.net/weixin_42345596/article/details/104925427