方法一:双层for循环
var arr=[1,2,1,4,5,6,6,4,4,'lucky','lucky']
// 方法一; for循环
function unique(arr){
// 第一层循环控制第一个数
for(var i = 0; i<arr.length;i++){
// 第二层循环控制第二个数
for(var j = i+1; j < arr.length; j++){
if(arr[i] === arr[j]){
// 删除重复的元素 从下标为j的元素开始删除1项
arr.splice(j,1);
j--;
}
}
}
}
unique(arr)
console.log(arr);//[ 1, 2, 4, 5, 6, 'lucky' ] splice()修改原数组长度
方法二:indexOf()
var arr=[1,2,1,4,5,6,6,4,4,'lucky','lucky']
function unique(arr) {
// 构造一个空数组
let newArr = [];
for(let i = 0;i < arr.length;i++){
// 判断新数组中是否有这个元素,indexOf()在数组中没找到指定元素则返回-1
if(newArr.indexOf(arr[i]) === -1){
// 新数组中没有指定元素则将该元素添加进新数组
newArr.push(arr[i])
}
}
return newArr;
}
console.log(unique(arr));//[ 1, 2, 4, 5, 6, 'lucky' ]
方法三:lastIndexOf()
//lastIndexOf()与indexOf()用法和作用类似,前者从当前下标开始往前检索,后者则往后检索
var arr=[1,2,1,4,5,6,6,4,4,'lucky','lucky']
function unique(arr) {
let newArr = [];
for(let i = 0;i < arr.length;i++){
if(newArr.lastIndexOf(arr[i]) === -1){
newArr.push(arr[i])
}
}
return newArr;
}
console.log(unique(arr));//[ 1, 2, 4, 5, 6, 'lucky' ]
方法四:forEach()+indexOf()
var arr=[1,2,1,4,5,6,6,4,4,'lucky','lucky']
function unique(arr) {
let newArr = [];
arr.forEach(function(item){
if(newArr.indexOf(item) === -1){
newArr.push(item)
}
});
return newArr;
}
console.log(unique(arr));//[ 1, 2, 4, 5, 6, 'lucky' ]
方法五:filter()+indexOf()
//fliter()+indexOf()
var arr=[1,2,1,4,5,6,6,4,4,'lucky','lucky']
function unique(arr) {
let newArr = [];
return arr.filter(function(item){
if(newArr.indexOf(item) === -1)
return newArr.push(item)
})
// return newArr;
}
console.log(unique(arr));//[ 1, 2, 4, 5, 6, 'lucky' ]
方法六:includes() or filter()+includes()
includes()方法用于判断字符串是否包含指定的子字符串,如果找到匹配的字符串则返回 true,否则返回 false。
//includes()
var arr=[1,2,1,4,5,6,6,4,4,'lucky','lucky']
function unique(arr) {
let newArr = [];
for(let i = 0;i<arr.length;i++){
if(newArr.includes(arr[i]) === false){
newArr.push(arr[i]);
}
}
return newArr;
}
console.log(unique(arr));//[ 1, 2, 4, 5, 6, 'lucky' ]
//filter()+includes()
var arr=[1,2,1,4,5,6,6,4,4,'lucky','lucky']
function unique(arr) {
let newArr = [];
return arr.filter(function(item){
return newArr.includes(item)?'':newArr.push(item)
})
}
console.log(unique(arr));//[ 1, 2, 4, 5, 6, 'lucky' ]
方法七:Set()去重
Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。
var arr=[1,2,1,4,5,6,6,4,4,'lucky','lucky']
let mySet=new Set(arr);
// 用...操作符,将 Set 转 Array
console.log([...mySet]);//[ 1, 2, 4, 5, 6, 'lucky' ]