去重的方法很多,不同的时候可以用不同的方法;关键是用什么判断两个值相等。
Set:不能去一样的对象 双等号:不能去一样的对象,NaN indexOf:不能去一样的对象,NaN 对象键名:不能去true includes:不能去对象 hasOwnProperty: map.has:不能去NaN
自己实现了一种,效率较低
var arr
= [, , 0b001, -Infinity, Infinity, +Infinity, 1, 1, 'true', +0, -0, [],
[],
[0],Symbol("foo"),Symbol("f"),
[0], 0, 'true', true, true, 15, 15,
false, false, undefined
, undefined
, null, null,
NaN, NaN, 'NaN', 0, 0, 'a', 'a', {}, {}, {
b
: [{
c
: null
}],
a
: 1,
}, {
a
: 1,
b
: [{
c
: null
}]
},
];
function uniqueArr(arr
) {
var obj
= {};
arr
.map(e
=> {
obj
[Object
.prototype
.toString
.call(e
) + JSON.stringify(e
) + String(e
)] = e
;
});
return Object
.values(obj
);
}
console
.log(uniqueArr(arr
))