第一种:双循环遍历是否存在当前值
var arr = [1,1,'1',2,2,'2','c','c','d']
function returnArr () {
var newArr = [arr[0]]
arr.forEach((item,index) => {
var flg = true
newArr.forEach((item2,index2) => {
if (item === item2) {
flg = false
}
})
// 当在新数组中没有当前值时进行插入
if (flg) {
newArr.push(item)
}
})
return newArr
}
console.log(returnArr())
输出结果:[1, "1", 2, "2", "c", "d"]
这种写法虽然能实现需求,但是相对来说写法比较臃肿
第二种: 拿到当前值去往后查找是否有相同的,如果有就去掉
function deleteArray( arr ){
for( var i = 0; i < arr.length; i++ ){
for( var j = i+1; j < arr.length; j++ ){
if( arr[i] === arr[j] ){
arr.splice(j, 1);
j--;
}
}
}
return arr;
}
console.log(deleteArray(arr))
输出结果:[1, "1", 2, "2", "c", "d"]
第三种:利用indexOf方法
function uniq(){
var arr2 = []
for(var i = 0; i < arr.length; i++){
if(arr2.indexOf(arr[i]) == -1){
arr2.push(arr[i])
}
}
return arr2
}
console.log(uniq())
输出结果:[1, "1", 2, "2", "c", "d"]
第四种: es6一行数组去重
Array.from(new Set(arr))
输出结果:[1, "1", 2, "2", "c", "d"]