一、使用set特性
set中的参数一定是可遍历的对象(数组可遍历)
<script>
var arr = [1,2,3,5,4,1,2,6,5,4,5,6,1,7,8,9,2,5,9];
let setArr = new Set(arr)
let arrNew = Array.from(setArr)
console.log(arrNew) //[1, 2, 3, 5, 4, 6, 7, 8, 9]
</script>
二、利用数组的indexOf下标属性来查询
function fn1(arr) {
var newArr = []
for (var i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i])
}
}
return newArr
}
console.log(fn1(arr)); //[1, 2, 3, 5, 4, 6, 7, 8, 9]
三、利用数组原型对象上的includes方法
function fn5(arr) {
var newArr = []
for (var i = 0; i < arr.length; i++) {
if (!newArr.includes(arr[i])) {
newArr.push(arr[i])
}
}
return newArr
}
console.log(fn5(arr)); //[1, 2, 3, 5, 4, 6, 7, 8, 9]
四、利用数组原型对象上的 lastIndexOf 方法
function fn2(arr) {
var res = [];
for (var i = 0; i < arr.length; i++) {
res.lastIndexOf(arr[i]) !== -1 ? '' : res.push(arr[i]);
}
return res;
}
console.log(fn2(arr)); //[1, 2, 3, 5, 4, 6, 7, 8, 9]
五、利用对象属性存在的特性,如果没有该属性则存入新数组
function fn3(arr) {
var obj = {}
var newArr = []
for (let i = 0; i < arr.length; i++) {
if (!obj[arr[i]]) {
obj[arr[i]] = 1
newArr.push(arr[i])
}
}
return newArr
}
console.log(fn2(arr));//[1, 2, 3, 5, 4, 6, 7, 8, 9]
六、利用数组原型对象上的 filter 和 includes方法
function fn4(arr) {
var newArr = []
newArr = arr.filter(function (item) {
return newArr.includes(item) ? '' : newArr.push(item)
})
return newArr
}
console.log(fn4(arr));//[1, 2, 3, 5, 4, 6, 7, 8, 9]