您的位置:首页 > Web前端 > JavaScript

js 寻找数组中的重复元素

2017-08-01 17:17 169 查看

题目:

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

思路一

利用indexOf,如果在数组中indexOf存在,则返回值不为-1,否则为-1

每次截取前i个元素形成newArr,判断arr【i】是否在newArr中出现过,并且在要返回的数组a中没出现过,这时就把次元素放到a中。

代码

function duplicates1(arr){
//利用indexOf,如果在数组中indexOf存在,则返回值不为-1,否则为-1
var a = [];
for(var i=1;i<arr.length;i++){
var newArr = arr.slice(0,i);
if(newArr.indexOf(arr[i])!==-1&&a.indexOf(arr[i])===-1){
a.push(arr[i]);
}
}
return a.sort();
}


思路二

利用indexOf和lastIndexOf是否相等,判断元素是否重复。如果相等,则说明元素只出现过1次,如果不相等,则说明出现过多次。

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


思路三

把每个元素出现的次数记录到一个对象中。找到次数大于1的就是重复的。这个思路也可以,解决统计重复元素出现次数的问题。

function duplicates(arr) {
var len = arr.length;
arr.sort();
var b={};var a = [];
var temp=arr[0];b[temp]=1;
for(var i=1;i<len;i++){
if(temp===arr[i]){
b[temp]+=1;
}else{
temp=arr[i];
b[temp]=1;
}
}
for(var i in b){
if(b[i]>1)
a.push(i);
}
return a;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: