JavaScript数组强力去重,数组中的内容可为任意值,包括NaN和Object
function distinct(arr) { let NaNFlag = false; let objStrArr = []; return arr.filter((item, index)=> { // 判断NaN if (item !== item) { if (NaNFlag) { return false } else { NaNFlag = true; return true } } // 判断Object if (typeof item === 'object') { let str = JSON.stringify(item); if (objStrArr.indexOf(str) !== -1) { return false; } else { objStrArr.push(str); return true; } } // 其他 let n = arr.indexOf(item); return n === index }) } var arr = ['a', 'a', 'b', {}, {}, {a: 'b'}, {a: 'c'}, {a: 'b'}, NaN, NaN, true, false, true, 1, 2, 1]; console.log(distinct(arr))运行后结果如下: