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]

 

 

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

posted on 2015-06-07 00:02  舞动的左手  阅读(926)  评论(0编辑  收藏  举报

导航