js 寻找数组中的重复元素

这篇博客探讨了三种在JavaScript中查找数组重复元素的方法。思路一利用indexOf检查元素是否存在;思路二通过比较indexOf和lastIndexOf判断重复;思路三则是通过创建对象统计元素出现次数来找出重复项。

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

题目:

找出数组 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;
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值