1.new Set()
通过 new Set() 得到一个去重的对象
然后通过Array.from 转化成数组 或者 通过扩展运算符转化成数组
var arr = [1,3,4,6,2,4,6,1,8]
function noRepeat(newarr){
// 通过Array.from转化成数组
return Array.from(new Set(newarr))
// 通过扩展运算符转化成数组
// return [...(new Set(newarr))]
}
console.log(noRepeat(arr));
2.indexOf() 并 结合for循环使用
indexOf()可以判断数组中是否包含某个值; 如果要检索的字符串值没有出现,则该方法返回 -1
var arr = [1,3,4,6,2,4,6,1,8]
function noRepeat(arr) {
// 声明一个空数组
var newarr = []
// 遍历当前的数组
for(var i=0; i<arr.length; i++){
// 判断新的空数组中有没有该字符串值 没有的话返回-1
// 如果新空数组中不存在 就把这个值赋给新的空数组
if(newarr.indexOf(arr[i]) == -1){
newarr.push(arr[i])
}
}
return newarr
}
console.log(noRepeat(arr));
3.sort() 先排序,再结合for循环使用
var arr = [1,3,4,6,2,4,6,1,8]
function noRepeat(arr){
// 先将数组排序
arr = arr.sort()
// 声明一个空数组
var newarr = []
// 遍历当前数组
for(var i=0; i<arr.length; i++){
// 判断如果第i项与前一项不相同 就添加到新数组
if(arr[i] !== arr[i-1]){
// 把arr[i]添加到新数组
newarr.push(arr[i])
}
}
return newarr
}
console.log(noRepeat(arr));
4.双重for循环
var arr = [1,1,1,3,4,6,2,4,6,1,8]
function noRepeat(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)
//因为splice删除返回的是一个新的数组,那么下次循环就跳过了一个元素
// 比如 原数组为[1,1,1,3,4,6,2,4,6,1,8] ,走过一次j循环删除后 返回的是[1,1,3,4,6,2,4,6,1,8]
// 那么当第二次遍历时 j=2 ,arr[2]=3 跳过了索引为2的 arr[2]=1,这样就可能造成还存有重复的数
// 所以要j--
j--
}
}
}
return arr
}
console.log(noRepeat(arr));