js数组找重复值

let arr1 = [1, 2, 4, 4, 3, 3, 1, 5, 3];

  求:arr1 数组中重复的值

思路:定一个空数组用来放相同的值,该数组循环两次,对比!

 

//关键代码

for(var j of arr){
  for(var i of arr){
   if(j === i && newArr.indexOf(j) == -1){
   newArr.push(j)  
}  
}  
}
return newArr

  悲剧的是,返回值是没有重复值跟我想的不一样  返回:[1,2,3,4,5]

修改一下   

j !== i

  返回 [1,2]

然后看了别人的代码

let arr = [1, 2, 4, 4, 3, 3, 1, 5, 3];
function duplicates(arr) {
            var result = [];
            arr.forEach(item => {
          //判断检查数据从头到尾 与 从尾到头 的位置是否 不同 并且 每次判断 新数组里面是否有 当前值的 位置 没有那么 进行下一步 if (arr.indexOf(item) !== arr.lastIndexOf(item) && result.indexOf(item) == -1) { result.push(item); } }) return result //返回 1 3 4 } duplicates(arr)

  唯一的缺点就是复杂度上升

arr.indexOf(item)

返回  0 1 2 2 4 4 0 7 4

arr.lastIndexOf(item)

返回 6 1 3 3 8 8 6 7 8


arr.indexOf(item) !== arr.lastIndexOf(item)

返回 true false true true true true true false true

  为true的时候

出现了 1 4 4 3 3 1  3

然后 

result.indexOf(item) == -1)  每次都要跟当前值 做对比 如果有 ,那么就不push 进去
那么 1 4 不push 3 不push 不push

最终返回143,第一次做感觉非常难,但是仔细想了之后,明白之后也就这样~~-,-

转载于:https://www.cnblogs.com/damai/p/7744361.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值