面试题:数组去重

一、编写两个以上方法实现数组的去重

        这是我今天在面试题中使用最多的,下来看了好几套面试题,即使没有直接问到,但是所涉及的问题中或多或少也会用到,所以非常重要!!!

方法一:

        利用添加 对象属性 方法去重,注意一定要用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]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值