成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

數(shù)組去重(es5,es6)

Prasanta / 710人閱讀

摘要:遍歷無法判斷循環(huán)去重效率較高遍歷效率不如判斷不出遍歷遍歷解決無法排除問題排除解決問題索引去重把直接全部去除掉了索引去重索引去重集合轉(zhuǎn)換效率低能去掉重復(fù)集合轉(zhuǎn)換掛載方法到上總結(jié)遍歷無法判斷需要手動判斷效率最高索引去重直接把所有干掉了看

const arr = [1,2,"1",null,null,undefined,undefined,false,false,NaN,NaN];

1.0 遍歷 無法判斷NaN
//for循環(huán)去重,效率較高
const unique1 = (arr)=>{
  const newArr = [];
  let item;
  for (let i = 0 , len = arr.length ; i < len; i++) {
    item = arr[i];
    if(newArr.indexOf(item) === -1){
      newArr.push(item);
    }
  }
  return newArr;
}
console.log("遍歷:unique1",unique1(arr));//[1, 2, null, false, NaN, NaN]

//forEach  效率不如for,判斷不出NaN
const unique2 = (arr)=>{
  const newArr = [];
  arr.forEach(item=>{
    if(newArr.indexOf(item) === -1){
      newArr.push(item);
    }
  })
  return newArr;
}
console.log("遍歷:unique2",unique2(arr));//[1, 2, null, false, NaN, NaN]

//reduce
const unique3 = (arr)=>{
  return arr.reduce((pre,next)=>{
    if(pre.indexOf(next) === -1){
      pre.push(next)
    };
    return pre;
  },[])
}
console.log("遍歷:unique3",unique3(arr));//?[1, 2, null, false, NaN, NaN]
//解決NaN無法排除問題
const unique1_1 = (arr)=>{
  const newArr = [];
  let item;
  let flag = true;
  for (let i = 0 , len = arr.length ; i < len; i++) {
    item = arr[i];
    if(newArr.indexOf(item) === -1){
      if(item != item){ //排除NaN
        if(flag){
          newArr.push(item);
          flag = false;
        }
      }else {
        newArr.push(item);
      }
    }
  }
  return newArr;
}

console.log("解決NaN問題:unique1_1",unique1_1(arr));//[1, 2, null, false, NaN]
2.0 索引去重 把NaN直接全部去除掉了
//2.1for
 const unique4 = (arr)=>{
   const newArr = [];
   let item;
   for (let i = 0 , len = arr.length; i < len; i++) {
     item = arr[i];
     if(arr.indexOf(item) === i){
       newArr.push(item);
     }
   }
   return newArr;
 }
 console.log("索引去重:unique4",unique4(arr));//[1, 2, null, false]


//2.2filter
const unique5 = (arr)=>{
  return arr.filter((item,index,arr)=>arr.indexOf(item) === index)
}
console.log("索引去重:unique4",unique5(arr));//[1, 2, null, false]
3.0集合轉(zhuǎn)換 效率低,能去掉重復(fù)NaN;
//Set
const unique6 = (arr)=>{
  return Array.from(new Set(arr));
}
console.log("集合轉(zhuǎn)換:unique6",unique6(arr));



掛載方法到Array上
const unique = function(){
  return Array.from(new Set(this));
}
Array.prototype.unique = unique;
const uniqueArr = arr.unique();

總結(jié): 遍歷無法判斷NaN需要手動判斷,for效率最高;索引去重直接把所有NaN干掉了,看情況使用;Set去重簡單、能去掉NaN,但是效率最低;

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/108499.html

相關(guān)文章

  • 數(shù)組去重--這幾種方法夠不?

    摘要:數(shù)組去重是校招面試的必考知識點。以下就是筆者所實現(xiàn)的數(shù)組去重的幾種簡單的方式。結(jié)合實現(xiàn)這種方法的關(guān)鍵點就是判斷是否相同的時候不要忽略對元素類型的判斷。以上就是筆者所想到的幾個數(shù)組去重的方式大家如果有更好的方法歡迎留言。 數(shù)組去重,是校招面試的必考知識點。簡單的說,數(shù)組去重就是將一個數(shù)組中的相同的元素刪除,只保留其中的一個。這里的相同其實是一個陷阱,有好多同學(xué)只認(rèn)為值相等即為相同,而忽略...

    wendux 評論0 收藏0
  • js數(shù)組去重(包含ES6解決方案)

    摘要:前幾天在做了一道題,這道題的核心問題是數(shù)組去重?,F(xiàn)寫一函數(shù),返回一個新的升序的字符串,其值由中的值組成,要求包含最多字符且不能重復(fù)。代碼中的和函數(shù)是中的數(shù)組方法。 前幾天在codewars做了一道題,這道題的核心問題是數(shù)組去重。昨晚之后看到別人的solution,感覺自己的solution太low了。 題目 Take 2 strings s1 and s2 including only...

    Near_Li 評論0 收藏0
  • JS數(shù)組去重總結(jié)

    摘要:數(shù)組去重,一般會在面試的時候才會碰到,要求手寫數(shù)組去重方法的代碼。在實際項目中碰到的數(shù)組去重,一般都是后臺去處理,很少讓前端處理數(shù)組去重。數(shù)組去重的方法一利用去重中最常用如果不考慮兼容性,這種去重的方法代碼最少。 數(shù)組去重,一般會在面試的時候才會碰到,要求手寫數(shù)組去重方法的代碼。如果是被提問到,數(shù)組去重的方法有哪些?你能答出其中的10種,面試官很有可能對你刮目相看。 在實際項目中碰到的...

    whinc 評論0 收藏0
  • JavaScript數(shù)組去重(12種方法,史上最全)

    摘要:數(shù)組去重,一般都是在面試的時候才會碰到,一般是要求手寫數(shù)組去重方法的代碼。如果是被提問到,數(shù)組去重的方法有哪些你能答出其中的種,面試官很有可能對你刮目相看。數(shù)組去重的方法一利用去重中最常用不考慮兼容性,這種去重的方法代碼最少。 數(shù)組去重,一般都是在面試的時候才會碰到,一般是要求手寫數(shù)組去重方法的代碼。如果是被提問到,數(shù)組去重的方法有哪些?你能答出其中的10種,面試官很有可能對你刮目相看...

    rozbo 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<