数组去重的方法
一般方法
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
}
缺点:
- 因为对象的key是string类型,所以对于数组里包含相同数字的字符串不能够识别,例如会把‘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]