使用set方法进行去重
const arrayDeleteRepeat = (array) => {
return Array.from(new Set(array))
}
将需要去重的数组转为Set;利用set成员的值都是唯一的,
没有重复的值的特性达到去重目的;去重之后使用Array.from方法将set转为数组;弊端是该方法无法对NaN去重。也可以使用扩展运算符使set转为数组
const arrayDeleteRepeat = (array) => {
let set = new Set(array)
return [...set]
}
使用indexOf方法进行去重
const arrayDeleteRepeat = (array) => {
let arr = [];
array.forEach(element => {
if (arr.indexOf(element) == -1) {
arr.push(element)
}
});
return arr
}
利用indexOf查询数组中有没有该元素,没有则添加,有的话不做处理。indexOf方法有两个缺点,一是不够语义化,它的含义是找到参数值的第一个出现位置,所以要去比较是否不等于-1,表达起来不够直观。二是,它内部使用严格相当运算符(===)进行判断,这会导致对NaN的误判;
使用includes方法进行去重
const arrayDeleteRepeat = (array) => {
let arr = [];
array.forEach(element => {
if (!arr.includes(element)) {
arr.push(element)
}
});
return arr
}
使用ES7的includes方法去判断是否有该元素,返回结果为布尔值,对NaN数据类型也能做处理
还有很多方法可以做到相同效果,这里就不一一列举了;
ok 再见。
如有不太合理的地方,欢迎指正