数组去重
方法一 使用set
let arr = [1, 1, 2, 2]
let uniq = Array.form(new Set(arr))
console.log(uniq) // [1, 2]
使用ES6新增的Set数据结构,它可以自动去重。将数组转换为Set对象,再将Set对象转换为数组即可。
方法二 使用for循环遍历数组
let arr = [1, 2, 2, 3, 3, 4, 5, 5];
let uniqueArr = [];
for (let i = 0; i < arr.length; i++) {
if (uniqueArr.indexOf(arr[i]) === -1) {
uniqueArr.push(arr[i]);
}
}
console.log(uniqueArr); // [1, 2, 3, 4, 5]
使用for循环遍历原数组,然后将每个元素和它之前的元素进行比较,如果相同就去除该元素。
方法三 使用Map
let uniq = function(arr) {
let map = new Map()
for (let i = 0; i < arr.length; i++) {
let number = arr[i]
if (number === undefined) {continue}
if (map.has(number)) {
continue
}
map.set(number, true)
}
return [...map.keys()]
}
创建一个空Map,然后遍历原数组,将数组的元素当key,value设置为true,如果在Map中已经存在,则忽略该元素,继续遍历数组,最后返回Map的key组成的数组。