var arr = [11, 22, 11, 66, 54, 54, 12, 98, 65, 22, 66, 98, 41, 52, 62, 36];
1.es6 Set方法
var setarr = [...new Set(arr)]
console.log(setarr);
2.对象法
核心原理 : 对象的属性名不能重复
取值 :
a.属性名存在,则取属性值
b.属性名不存在,则取undefined
赋值:
a.属性名存在,修改属性值
b.属性名不存在,动态添加属性名
var obj = {};//检测数组元素是否重复
var objarr = [];
for (var i = 0; i < arr.length; i++) {
if (obj[arr[i]] == undefined) {//元素没有重复
objarr.push(arr[i]);
obj[arr[i]] = 1;//标记已经出现,下次取值不会是undeinfed
}
}
console.log(objarr);
3.开关思想法
var flagarr = [arr[0]]
// 因为新数组是空的,所以第一个值一定可以存到新数组中
for (var i = 0; i < arr.length; i++) {// 为什么从下标1开始,因为第0位一定可以存到新数组中,所以可以节省一次循环
// 3. 将老数组的值与新数组的每一个值做对比---遍历新数组
for (var j = 0; j < flagarr.length; j++) {
var flag = false
// 假设老数组的值与新数组中的值相等
if (arr[i] == flagarr[j]) {
break
} else {
flag = true;
}
}
if (flag) {
flagarr.push(arr[i])
}
}
console.log(flagarr);
4.indexof()方法;
//indexof()方法:
// let str = 'orange';
// str.indexOf('o'); //0
// str.indexOf('n'); //3
// str.indexOf('c'); //-1 找不到是打印-1
var temp = []; //用于放去重后的数组
for (var i = 0; i < arr.length; i++) {
if (temp.indexOf(arr[i]) == -1) {
temp.push(arr[i])
}
}
console.log(temp)