核心思路:将一个值的的类型+值作为key
代码如下:
let obj={}
return arr.filter(item => {
return obj.hasOwnProperty(typeof item + item) ?
false : (obj[typeof item + item] = true)
})
arr就是需要筛选的数据
相较于new Set()方法,能区分出{},{}重复的筛选,new Set需要对对象进行重复的判断
但是依然有一些吹毛求疵的缺点:
NaN 不同于自身: NaN(Not a Number)是 JavaScript 中一个特殊的值,而 NaN 与自身不相等。但是,该函数将 NaN 视为相等,因为它使用 typeof item + item
作为对象的键。
对象引用不同于自身: 对象是引用类型,即使两个对象具有相同的结构和值,它们也是不相等的。但是,该函数会将两个不同的对象视为相等,因为它仅仅检查了对象的引用而不是内容。
null 和 undefined 视为相等: 在 JavaScript 中,null 和 undefined 被视为相等的,但是该函数会将它们视为不同的值。