我正在参加「掘金·启航计划」
js 数组去重
最简单的数组去重方法:
数组 indexOf() 方法可返回数组中某个指定的元素位置(下标)。如果在数组中没找到指定元素则返回 -1。
var arr = ["a","b","c","a","d","b","e","c"]
function removeRepeat(arr){
let result = [] // 定义一个新的空数组
arr.forEach(item=>{ // 遍历当前数组
if(result.indexOf(item) == -1){ // 如果当前新数组不包含当前遍历数组项
result.push(item) // 在新数组中添加当前数组遍历项
}
})
return result
}
let result = removeRepeat(arr)
console.log(result) // ["a","b","c","d","e"]
数组下标判断法:
var arr = ["a","b","c","a","d","b","e","c"]
function removeRepeat(arr){
let result = [arr[0]] // 结果数组
arr.forEach((item,index)=>{
if(index >0 && arr.indexOf(item) == index){ // 从数组第二项开始遍历比较
result.push(item)
}
})
return result
}
let result = removeRepeat(arr)
console.log(result) // ["a","b","c","d","e"]
速度最快, 占空间最多(空间换时间):
var arr = ["a","b","c","a","d","b","e","c"]
function removeRepeat(arr){
var obj = {} , result = [], type;
arr.forEach(item =>{
type = typeof item;
if(!obj[item]){
obj[item] = [type]
result.push(item)
}else if(obj[item].indexOf(type) < 0){
obj[item].push(type)
result.push(item)
}
})
console.log(obj)
return result
}
let result = removeRepeat(arr) // ["a","b","c","d","e"]
console.log(result)
数组 includes() 方法判断一个数组是否包含一个指定的值,如果是返回 true,否则false。
var arr = ["a","b","c","a","d","b","e","c"]
function removeRepeat(arr){
let result = [] // 定义一个新的空数组
arr.forEach(item=>{ // 遍历当前数组
if(!result.includes(item)){ // 如果当前新数组不包含当前遍历数组项
result.push(item) // 在新数组中添加当前数组遍历项
}
})
return result
}
let result = removeRepeat(arr) // ["a","b","c","d","e"]
console.log(result)
es6 set() 方法 + …扩展运算符 数组去重:
var arr = ["a","b","c","a","d","b","e","c"]
function removeRepeat(arr) {
return [...new Set(arr)]
}
let result = removeRepeat(arr)
console.log(result) // ["a","b","c","d","e"]
es6 set() 方法 + Array.from() 数组去重:
var arr = ["a","b","c","a","d","b","e","c"]
function removeRepeat(arr) {
return Array.from(new Set(arr)) // Array.from()能把set结构转换为数组
}
let result = removeRepeat(arr)
console.log(result) // ["a","b","c","d","e"]