一、利用数组的sort
// 初始化一个数组
const arr = [1,2,4,5,1,3,4,2,8,8,8,9,7,7,7,5,6,6,6];
// 对数组进行排序
const newArr = arr.sort(function(a,b){return a-b;});
// 循环遍历排序后的数组
for (let i = 0; i<newArr.length; i++) {
// 判断当前值和下一个值是否相等
if (newArr[i] === newArr[i+1]) {
// 如果相同就删除一个
newArr.splice(newArr[i+1], 1);
// 同时下标需要发生变化
i--;
}
}
console.log(newArr);运行结果:

二、利用对象属性唯一特性
// 初始化数组
const arr = [3,12,2,3,42,53,1,8,5,8,5,7,6,4,3,1,2];
// 初始化一个空对象
const obj = {};
// 遍历数组的每一项,将值作为对象的属性
for (let i = 0; i<arr.length; i++) {
obj[arr[i]] = 0;
}
// 创建新数组,接受去重后的值
const newArr = [];
for (let key in obj){
// for in 循环遍历对象的每一个属性,得到的属性值为字符串,需要转化为数字
// 将每一项值添加到新数组中
newArr.push(+key);
}
console.log(newArr);运行结果:

三、利用set集合的值不唯一性
const arr = [1,2,3,4,1,2,3,4,6,7,2];
console.log([...new Set(arr)]);输出:

四、利用indexOf查找下标
let arr = [1,3,2,4,23,3,1,2,4,8,5,8];
let newArr = [];
for (let i = 0; i < arr.length; i++){
// 通过i判断数组中每一项出现的位置
if (arr.indexOf(arr[i]) == i) {
newArr.push(arr[i]);
}
}
console.log(newArr);输出:
