數(shù)組去重的幾種簡(jiǎn)單方法

1.最簡(jiǎn)單的就是ES6的實(shí)現(xiàn)
function unique(arr){ return [...new Set(arr)]; }
或者是
function unique(arr){ return Array.from(new Set(arr)); }

2.就是我之前最常用的,思想就是先新建一個(gè)數(shù)組temp,遍歷一下,判斷這個(gè)新數(shù)組中有沒有當(dāng)前這個(gè)值,沒有就push進(jìn)去,最簡(jiǎn)單數(shù)組去重法

function unique(array){
  var temp = []; //一個(gè)新的臨時(shí)數(shù)組
  for(var i = 0; i < array.length; i++){
      if(temp.indexOf(array[i]) == -1){
          temp.push(array[i]);
      }
  }
  return temp;
}

3.第三中的想法和第二種差不多,是通過遍歷來判斷當(dāng)前這個(gè)值是不是在原數(shù)組里第一次出現(xiàn),也就是說通過判斷這個(gè)元素的位置是不是等于當(dāng)前的下標(biāo),是那就是第一次出現(xiàn)啦,很簡(jiǎn)單。

function unique(array){
  var temp = []; //一個(gè)新的臨時(shí)數(shù)組
  for(var i = 0; i < array.length; i++){
      if(array.indexOf(array[i]) === i){
          temp.push(array[i]);
      }
  }
  return temp;
}

4.第四種就是根據(jù)第三中的想法引申出來了的,是通過filter函數(shù)來實(shí)現(xiàn)

function unique(array){
  return array.filter( (element, index, self) => {
    return self.indexOf( element ) === index;
  });
}

5.對(duì)象鍵值法去重(這是我找的網(wǎng)上的,感覺挺好,雖然麻煩些)

/* * 速度最快, 占空間最多(空間換時(shí)間)
*
* 該方法執(zhí)行的速度比其他任何方法都快, 就是占用的內(nèi)存大一些。
* 現(xiàn)思路:新建一js對(duì)象以及新數(shù)組,遍歷傳入數(shù)組時(shí),判斷值是否為js對(duì)象的鍵,
* 不是的話給對(duì)象新增該鍵并放入新數(shù)組。
* 注意點(diǎn):判斷是否為js對(duì)象鍵時(shí),會(huì)自動(dòng)對(duì)傳入的鍵執(zhí)行“toString()”,
* 不同的鍵可能會(huì)被誤認(rèn)為一樣,例如n[val]-- n[1]、n["1"];
* 解決上述問題還是得調(diào)用“indexOf”。*/
function unique(array){ 
  var temp = {}, r = [], len = array.length, val, type; 
  for (var i = 0; i < len; i++) {
        val = array[i];
        type = typeof val; if (!temp[val]) {
            temp[val] = [type];
            r.push(val);
        } else if (temp[val].indexOf(type) < 0) {
            temp[val].push(type);
            r.push(val);
        }
    } 
  return r;
} 

暫時(shí)先這樣,有好的我再繼續(xù)更新,哈哈

這里還有一個(gè)更全的鏈接,請(qǐng)移步這里:他山之石

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容