一、编写两个以上方法实现数组的去重
这是我今天在面试题中使用最多的,下来看了好几套面试题,即使没有直接问到,但是所涉及的问题中或多或少也会用到,所以非常重要!!!
方法一:
利用添加 对象属性 方法去重,注意一定要用obj[item],而不是obj.item
const arr = [1,2,4,2,1,2,3,5]
function unique(ary){
let result = [],obj={}
ary.forEach(item=>{
if(!obj[item]){
result.push(item)
obj[item] = item
}
})
return result
}
unique(arr) //[1, 2, 4, 3, 5]
console.log(unique(arr));
方法二:
利用 indexOf 去重,遍历原数组,判断新数组是否存在当前元素,如果没有则push进新数组
const arr = [1,2,4,2,1,2,3,5]
function unique(ary){
// 创建一个新数组,用于接收
let result = []
// 遍历数组中的每一个元素
ary.forEach(value=>{
// 判断数组中的元素 是否在新数组中存在,不存在的话,把这个元素放进去
if(result.indexOf(value) === -1){
result.push(value)
}
})
return result
}
unique(arr) //[1, 2, 4, 3, 5]
方法三:
利用 filter 过滤函数结合 indexOf 只返回第一个找到的元素的索引,返回数组中唯一的值
const arr = [1,2,4,2,1,2,3,5]
function unique(arr){
return arr.filter((item,index)=>{
return index === arr.indexOf(item)
})
}
unique(arr) //[1, 2, 4, 3, 5]