var arr = [NaN, NaN, undefined, undefined, null, '', '', NaN, undefined, undefined, null]; //判断一个数组里有没有NaN function chechNaNFromArr(arr) { if(!arr || arr.length == 0) return false; for(var i = 0; i < arr.length; i++) { if(Number.isNaN(arr[i])) { return true; } } return false; } //判断一个数组里有没有undefined function chechUndefinedFromArr(arr) { if(!arr || arr.length == 0) return; for(var i = 0; i < arr.length; i++) { if(typeof arr[i] === "undefined") { return true; } } return false; } //判断一个数组里有没有null function chechNullFromArr(arr) { if(!arr || arr.length == 0) return; for(var i = 0; i < arr.length; i++) { if(typeof arr[i] === "object" && arr[i] == arr[i]) { return true; } } return false; } //去重 function quChong(arr) { var newArr = []; for(var i = 0; i < arr.length; i++) { //NaN处理 if(Number.isNaN(arr[i])) { if(!chechNaNFromArr(newArr)) { newArr.push(arr[i]); } continue; } //undefined处理 if(typeof arr[i] === "undefined") { if(!chechUndefinedFromArr(newArr)) { newArr.push(arr[i]) } continue; } //null处理 if(typeof arr[i] === "object" && arr[i] == arr[i]) { if(!chechNullFromArr(newArr)) { newArr.push(arr[i]); } continue; } //其他处理 if(newArr.indexOf(arr[i]) == -1) { newArr.push(arr[i]); } } return newArr; } console.log(quChong(arr))