JS陣列去重 包含去除多個 NaN

浮生小夢發表於2018-04-18
Array.prototype.uniq = function () {
  var arr = [];
  var flag = true;
  this.forEach(function(item) {

    // 排除 NaN (重要!!!) NaN 和自身不相等
    // 除了NaN 其他資料 和 自己都 相等
    if (item != item) {
       // 只有第一次找到NaN 把他放進陣列裡面
       flag && arr.indexOf(item) === -1 ? arr.push(item) : “;
       flag = false;
           } else  {
             arr.indexOf(item) === -1 ? arr.push(item) : “
           }
        });
         return arr;
}
 
var arr = [NaN,NaN,NaN,1,2,{},{},null,null,undefined,undefined];
var uniqueArr = arr.uniq();
console.log(uniqueArr); //  [NaN, 1, 2, {…}, {…}, null, undefined]
// Es6 一行程式碼搞定
var uniqueArr2 = Array.from(new Set(arr));
console.log(uniqueArr2); //  [NaN, 1, 2, {…}, {…}, null, undefined]
 
 

相關文章