老生常谈的数组去重

狼狼恶狗,记得第一次面试的时候就被问到数组去重的实现方法。如今提供下几种经常使用的方法。es6

利用hash查找

function unique(arr){
    var result =[],hash = {};
    for (var i = 0,len = arr.length; i<len; i++){
        if(!hash[arr[i]]){
            hash[arr[i]] = true;
            result.push(arr[i])
        }
    }
    return result;
}
复制代码

利用indexof

function unique(arr){
    var result = []; 
    for(var i=0; i<arr.length; i++){
      if(arr.indexOf(arr[i]) == i){
         result.push(arr[i]);
      }
    }
    return result;
  }
复制代码
function unique(arr){
    return arr.filter(function (item, index, self) {
        return self.indexOf(item) === index;
    });
}
复制代码

es6

function unique (arr) {
  return Array.from(new Set(arr))
}

function unique (arr) {
  const seen = new Map()
  return arr.filter((a) => !seen.has(a) && seen.set(a, 1))
}
复制代码

若有不正确之处,欢迎指出面试

相关文章
相关标签/搜索