前言

var repeatArr = [2, 1, 1, 10, 12, 5, 7, 7, 2, 1]
第一种:利用 es6 Set 类
function repeatArrFn1(arr) {
return Array.from(new Set(arr));
}
function repeatArrFn10(arr) {
return [...new Set(arr)]
}
第二种: 利用对象键名的唯一性
function repeatArrFn2(arr) {
var obj = {};
arr.forEach(num =>!obj[num] && (obj[num] = 1));
return Object.keys(obj).map(num =>+num);
}
第三种:一层 循环 + 数组 Api
function repeatArrFn3(arr) {
var result = [],num
// arr.forEach(num => !result.includes(num) && result.push(num))
arr.forEach(num => result.indexOf(num) === -1 && result.push(num))
return result
}
第四种:利用数组下标去重
function repeatArrFn4(arr){
return arr.filter((num,index)=>index === arr.indexOf(num))
}
第五种:双重循环
//用第一次循环的第一个值,跟第二次循环的每个值进行对比,如果没有相同的就存进result数组里
function repeatArrFn5(arr) {
var result = [],flag
for (var i = 0
flag = true
for (var j = i + 1
(arr[i] === arr[j]) && (flag = false)
}
flag && result.push(arr[i])
}
return result
}
第六种:利用 sort 排序后再处理
function repeatArrFn6(arr) {
var temp = arr.sort()
var result = [temp[0]]
for (var i = 1
if (temp[i] !== temp[i - 1]) {
result.push(temp[i])
}
}
return result
}