js 删除数组中重复元素

我现在大三。前几天做了一下阿里巴巴春季面试题,其中有一道是:编写一个函数,传入一个数组,如果有相同的元素,删除元素。返回数组

思考了一下,我的步骤很简单

(1)先把数组排序。

(2)如果第i个和i+1个相同,则删掉其中一个元素就可以了

先贴代码如下:

function delRepeat(arr){
  arr.sort(function(a,b){
    return a>b? 1:-1;
  });


  for(var i = 0;i<arr.length;i++){
    if(arr[i] === arr[i+1]){
      arr.splice(i,1);
    }
  }
  return arr;
}

分析:利用数组方法 sort().但是sort()方法不能准确按照数字大小返回,因为这个方法是按照字典序排列。所以return a>b? 1:-1;这一句来保证数组从小到大排列。

  接下来判断如果第i个和i+1个相同,则用数组的splice()方法。第一个参数是删除元素的开始位置,第二个参数是删除的个数。(返回一个包含被移除元素的数组)。

  好了,这样就简单实现了。

 

 

示例:       var arr = [1,23,4,32,4];

浏览器返回:  delRepeat(arr);

        [1, 4, 23, 32]

 

 

问题:如果题目要求不能排序,怎么做我就没思路了…………

转载于:https://www.cnblogs.com/yanpu/p/4557568.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值