数组去重

著名面试题:
如何实现数组去重?
假设有数组 array = [1,5,2,3,4,2,3,1,3,4]
你要写一个函数 unique,使得
unique(array) 的值为 [1,5,2,3,4]
也就是把重复的值都去掉,只保留不重复的值。

不使用 Set

function unique(arr) {
    if (!Array.isArray(arr)) return "error"
    let res = []
    for (let i = 0; i < arr.length; i++) {
        if (res.indexOf(arr[i]) === -1) {
            res.push(arr[i])
        }
    }
    return res
}

使用 Set 去重

function unique(arr) {
    if (!Array.isArray(arr)) return "error"
    return [...new Set(arr)]
}

使用Map 支持对象去重的

function unique(arr) {
  let hashMap = new Map();
  let result = new Array();  
  for (let i = 0; i < arr.length; i++) {
    if(hashMap.has(arr[i])) { 
      hashMap.set(arr[i], true); 
    } else { 
      hashMap.set(arr[i], false);  
      result.push(arr[i]);
    }
  } 
  return result;
}

你可能感兴趣的:(数组去重)