海纳百川

数组去重

2018-06-28  本文已影响0人  凛冬已至_123

数组去重的方法

一般方法

var a= [1,2,3,4,3,2,1];
function led(arr) {
  let hash={}
  let result=[]
  for(let i =0; i<a.length; i++){
    hash[arr[i]]=true
  }
  for(let key in hash){
    result.push(Number(key))
    
  }
  return result
}

缺点:

  1. 因为对象的key是string类型,所以对于数组里包含相同数字的字符串不能够识别,例如会把‘2’和2认定为一样。
  2. 同样数组中包含对象的话,会将其转变为string

ES6的Set方法

function led(arr) {
  return Array.from(new Set(arr))
}
var b =[1,2,3,3,4,2,1]
var c = [...new Set(b)]
console.log(c)//[1,2,3,4]
var d = 'sdfgjhjddd'
var e = [...new Set(d)].join('')
console.log(e)//'sdfgjh'

非常简单

map方法

let arr= [1,2,3,4,5,3,2,4,1];
const result = [];
const map = new Map();
for (let v of arr) {
    if (!map.has(v)) {
        map.set(v, true);
        result.push(v);
    }
}
console.log(result); // -> [1, 2, 3, 4, 5]

arr.inclue方法

let arr= [1,2,3,4,5,3,2,4,1];
const result = [];
for (let v of arr) {
    if (!result.includes(v)) {
        result.push(v);
    }
}
console.log(result); // -> [1, 2, 3, 4, 5]
上一篇 下一篇

猜你喜欢

热点阅读