欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript常見(jiàn)的五種數(shù)組去重的方式

 更新時(shí)間:2016年12月15日 10:34:38   作者:老板丶魚(yú)丸粗面  
本文主要JavaScript常見(jiàn)的五種數(shù)組去重的方式進(jìn)行一一思路分析實(shí)例介紹,易于理解與學(xué)習(xí),具有很好的參考價(jià)值,需要的朋友一起來(lái)看下吧

大致介紹

JavaScript的數(shù)組去重問(wèn)題在許多面試中都會(huì)遇到,現(xiàn)在做個(gè)總結(jié)

先來(lái)建立一個(gè)數(shù)組

var arr = [1,2,3,3,2,'我','我',34,'我的',NaN,NaN];

第一種

思路:建立一個(gè)臨時(shí)數(shù)組,用for循環(huán)去依次判斷arr中的每個(gè)項(xiàng)在臨時(shí)數(shù)組中是否有相同的值,如果沒(méi)有則將這個(gè)值添加到臨時(shí)數(shù)組,如果有相同的值則不添加,最后返回這個(gè)臨時(shí)數(shù)組

代碼:

Array.prototype.removeDuplicate = function(){
  var n = [];
  for(var i=0;i<this.length;i++){
  if(n.indexOf(this[i]) == -1 ){
  n.push(this[i]);
  }
  }
 return n;
}
var m = arr.removeDuplicate();
console.log(m);//[1, 2, 3, "我", 34, "我的", NaN, NaN]

注意:不會(huì)去掉重復(fù)的NaN值

第二種   

思路:建立一個(gè)臨時(shí)數(shù)組,用for循環(huán)利用indexOf()方法去依次判斷arr中的每個(gè)項(xiàng)在arr中第一次出現(xiàn)的位置,如果這個(gè)項(xiàng)在arr中第一次出現(xiàn)的位置就是它的位置,表明在它之前沒(méi)有相同的值則把它添加到臨時(shí)數(shù)組中,如果這個(gè)項(xiàng)在arr中第一次出現(xiàn)的位置不是他的位置則表明在它之前有相同的值,則不把他添加到臨時(shí)數(shù)組中;最后返回臨時(shí)數(shù)組

代碼:

Array.prototype.removeDuplicate = function(){
  var n = [];
  for(var i=0;i<this.length-1;i++){
  if(this.indexOf(this[i]) == i){
  n.push(this[i]);
  }
  }
 return n;
 }
 var m = arr.removeDuplicate();
 console.log(m);//[1, 2, 3, "我", 34, "我的"]

注意:會(huì)把NaN值刪除

第三種

思路:建立一個(gè)臨時(shí)對(duì)象,利用for循環(huán)檢測(cè)這個(gè)臨時(shí)對(duì)象有沒(méi)有arr[i]這個(gè)屬性,如果沒(méi)有這個(gè)屬性表明arr[i]在它之前沒(méi)有和它重復(fù)的值。把臨時(shí)對(duì)象的arr[i]屬性設(shè)置為true,表明有這個(gè)屬性并把這個(gè)項(xiàng)添加到臨時(shí)數(shù)組中;最后返回臨時(shí)數(shù)組

代碼:

Array.prototype.removeDuplicate = function(){
  var n = [],m = {};
  for(var i=0;i<this.length;i++){
  if(!m[this[i]]){
  m[this[i]] = true;
  n.push(this[i]);
  }
  }
 return n;
 }
var m = arr.removeDuplicate();
console.log(m);//[1, 2, 3, "我", 34, "我的", NaN]

第四種

思路:先將這個(gè)數(shù)組排序,然后比較每個(gè)項(xiàng)和它后面的項(xiàng)的值是否相等,如果不相等則添加到臨時(shí)數(shù)組中;最后返回臨時(shí)數(shù)組

代碼:

Array.prototype.removeDuplicate = function(){
 var n = [];
 this.sort();
 for(var i=0;i<this.length;i++){
 if(this[i] != this[i+1]){
  n.push(this[i]);
  }
 }
 return n;
 }
var m = arr.removeDuplicate();
console.log(m);//[1, 2, 3, 34, NaN, NaN, "我", "我的"]

注意:不會(huì)去掉重復(fù)的NaN值

第五種

思路:利用ES6的方法set方法去重,并用Array.from轉(zhuǎn)換為數(shù)組

set是一種新的數(shù)據(jù)結(jié)構(gòu),它可以接收一個(gè)數(shù)組或者是類(lèi)數(shù)組對(duì)象,自動(dòng)去重其中的重復(fù)項(xiàng)目,返回一個(gè)對(duì)象

代碼:

Array.prototype.removeDuplicate = function(){
 return (Array.from(new Set(this)));
 }
 var m = arr.removeDuplicate();
 console.log(m);//[1, 2, 3, "我", 34, "我的", NaN]

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • JavaScript實(shí)現(xiàn)滑塊驗(yàn)證案例

    JavaScript實(shí)現(xiàn)滑塊驗(yàn)證案例

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)滑塊驗(yàn)證案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • JS中的幾種循環(huán)和跳出方式

    JS中的幾種循環(huán)和跳出方式

    這篇文章介紹了JS中的幾種循環(huán)和跳出方式,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • vue2.0獲取自定義屬性的值

    vue2.0獲取自定義屬性的值

    這篇文章主要為大家詳細(xì)介紹了vue2.0如何獲取自定義屬性的值,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 基于JavaScript偽隨機(jī)正態(tài)分布代碼實(shí)例

    基于JavaScript偽隨機(jī)正態(tài)分布代碼實(shí)例

    這篇文章主要介紹了基于JavaScript偽隨機(jī)正態(tài)分布代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • js 數(shù)組詳細(xì)操作方法及解析合集

    js 數(shù)組詳細(xì)操作方法及解析合集

    在開(kāi)發(fā)中,數(shù)組的使用場(chǎng)景非常多,平日中也涉及到很多數(shù)組的api/相關(guān)操作,一直也沒(méi)有對(duì)這塊內(nèi)容進(jìn)行一塊整理總結(jié),很多時(shí)候就算用過(guò)幾次這個(gè)api,在開(kāi)發(fā)中也很容易忘記,還是要谷歌一下
    2018-06-06
  • JavaScript使用Promise實(shí)現(xiàn)分批處理接口請(qǐng)求

    JavaScript使用Promise實(shí)現(xiàn)分批處理接口請(qǐng)求

    當(dāng)我們?cè)趯?shí)際項(xiàng)目中遇到需要批量發(fā)起上百條接口請(qǐng)求怎么辦呢,本文就來(lái)為大家介紹一下JavaScript如何使用Promise實(shí)現(xiàn)分批處理接口請(qǐng)求,需要的小伙伴可以參考一下
    2023-11-11
  • JavaScript中的函數(shù)式編程詳解

    JavaScript中的函數(shù)式編程詳解

    這篇文章主要介紹了JavaScript中的函數(shù)式編程詳解,需要的朋友可以參考下
    2020-08-08
  • JS實(shí)現(xiàn)1000以?xún)?nèi)被3或5整除的數(shù)字之和

    JS實(shí)現(xiàn)1000以?xún)?nèi)被3或5整除的數(shù)字之和

    今天在技術(shù)群里看到一道這樣的提:求1000以?xún)?nèi)被3或5整除的數(shù)字之和。小編把我的解決辦法分享到腳本之家平臺(tái),供大家參考
    2016-02-02
  • JavaScript設(shè)置首頁(yè)和收藏頁(yè)面的小例子

    JavaScript設(shè)置首頁(yè)和收藏頁(yè)面的小例子

    這篇文章介紹了JavaScript設(shè)置首頁(yè)和收藏頁(yè)面的小例子,有需要的朋友可以參考一下
    2013-11-11
  • Javascript函數(shù)式編程簡(jiǎn)單介紹

    Javascript函數(shù)式編程簡(jiǎn)單介紹

    什么是函數(shù)式編程?根據(jù)百度百科的描述,“函數(shù)式編程是種編程典范,它將電腦運(yùn)算視為函數(shù)的計(jì)算。函數(shù)編程語(yǔ)言最重要的基礎(chǔ)是 λ 演算(lambda calculus)。而且λ演算的函數(shù)可以接受函數(shù)當(dāng)作輸入(參數(shù))和輸出(返回值)?!?/div> 2015-10-10

最新評(píng)論