前端及其优雅的去重方式

核心思路:将一个值的的类型+值作为key

代码如下:

let obj={}
return arr.filter(item => {
			return obj.hasOwnProperty(typeof item + item) ?
             false : (obj[typeof item + item] = true)
		})

arr就是需要筛选的数据

相较于new Set()方法,能区分出{},{}重复的筛选,new Set需要对对象进行重复的判断

但是依然有一些吹毛求疵的缺点:

  1. NaN 不同于自身: NaN(Not a Number)是 JavaScript 中一个特殊的值,而 NaN 与自身不相等。但是,该函数将 NaN 视为相等,因为它使用 typeof item + item 作为对象的键。

  2. 对象引用不同于自身: 对象是引用类型,即使两个对象具有相同的结构和值,它们也是不相等的。但是,该函数会将两个不同的对象视为相等,因为它仅仅检查了对象的引用而不是内容。

  3. null 和 undefined 视为相等: 在 JavaScript 中,null 和 undefined 被视为相等的,但是该函数会将它们视为不同的值。

你可能感兴趣的:(javascript,开发语言,ecmascript)