最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript數(shù)組去重算法實(shí)例小結(jié)

 更新時(shí)間:2018年05月07日 14:43:21   作者:ll_xiaohanqing_91  
這篇文章主要介紹了JavaScript數(shù)組去重算法,結(jié)合實(shí)例形式總結(jié)分析了JavaScript數(shù)組去重相關(guān)的讀寫(xiě)、遍歷、比較、排序等操作及算法改進(jìn)相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下

本文實(shí)例總結(jié)了JavaScript數(shù)組去重算法。分享給大家供大家參考,具體如下:

測(cè)試用例:

arr = ["1",3,"1",1,4,5,1,"2",5,1,{"name":"li","age":20},2,4,3,{"name":"li","age":20},""];

方法一:借助于臨時(shí)數(shù)組與indexOf , 算法復(fù)雜度為:O(n^2)

function unique1(arr){
  var temp = [];
  for(var i=0; i<arr.length; i++){
    if(temp.indexOf(arr[i]) == -1){
      temp.push(arr[i]);
    }
  }
  return temp;
}

測(cè)試結(jié)果:

unique1(arr) : ["1", 3, 1, 4, 5, "2", Object { name="li", age=20}, 2, Object { name="li", age=20}, ""]

bug 無(wú)法區(qū)分對(duì)象

方法二 : 用JavaScript中的Object對(duì)象來(lái)當(dāng)作哈希表

function unique2(arr){
  var temp=[];
  var hash={};
  for(var i=0; i<arr.length;i++){
    if(!hash[arr[i]]){
      hash[arr[i]]=true;
      temp.push(arr[i]);
    }
  }
  return temp;
}

測(cè)試結(jié)果:

unique2(arr) : ["1", 3, 4, 5, "2", Object { name="li", age=20}, ""]

bug : 無(wú)法區(qū)分: 1 和 "1"

修改

function unique2(arr){
  var temp=[];
  var hash={};
  for(var i=0; i<arr.length;i++){
      var item = arr[i];
    var key = typeof(item)+item;
    if(!hash[key]){
      hash[key]=true;
      temp.push(arr[i]);
    }
  }
  return temp;
}

測(cè)試結(jié)果:

unique2(arr) : ["1", 3, 1, 4, 5, "2", Object { name="li", age=20}, 2, ""]

方法三:先用sort對(duì)數(shù)組排序,然后借助臨時(shí)數(shù)組,存儲(chǔ)相同元素的最后一個(gè),該方法只能用于純Number類(lèi)型數(shù)組

function unique3(arr){
  arr.sort(function(a,b){
    return a-b;
  });
  var temp = [];
  for(var i=0;i<arr.length;i++){
    if(arr[i] !== arr[i+1]){
      temp.push(arr[i]);
    }
  }
  return temp;
}

PS:這里再為大家提供幾款相關(guān)工具供大家參考使用:

在線去除重復(fù)項(xiàng)工具:
http://tools.jb51.net/code/quchong

在線文本去重復(fù)工具:
http://tools.jb51.net/aideddesign/txt_quchong

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《JavaScript數(shù)組操作技巧總結(jié)》、《JavaScript字符與字符串操作技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • JS時(shí)間戳與日期格式的轉(zhuǎn)換小結(jié)

    JS時(shí)間戳與日期格式的轉(zhuǎn)換小結(jié)

    這篇文章主要介紹了JS時(shí)間戳與日期格式的轉(zhuǎn)換小結(jié),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01
  • 一個(gè)級(jí)聯(lián)菜單代碼學(xué)習(xí)及removeClass與addClass的應(yīng)用

    一個(gè)級(jí)聯(lián)菜單代碼學(xué)習(xí)及removeClass與addClass的應(yīng)用

    最近在學(xué)些web前段的知識(shí),看見(jiàn)博客園首頁(yè)左側(cè)的一個(gè)級(jí)聯(lián)菜單,很是好奇,于是想自己實(shí)現(xiàn)以下,代碼書(shū)寫(xiě)很簡(jiǎn)潔而且易懂,感興趣的朋友可以了解下,希望本文對(duì)你學(xué)習(xí)級(jí)聯(lián)菜單有所幫助
    2013-01-01
  • jquery在Chrome下獲取圖片的長(zhǎng)寬問(wèn)題解決

    jquery在Chrome下獲取圖片的長(zhǎng)寬問(wèn)題解決

    需要獲得圖片的長(zhǎng)寬,在IE、FireFox下均正常,就TMD在Chrome中不行,有人說(shuō)是Chrome版本的問(wèn)題,最終終于找到了解決方法,在這與大家分享下
    2013-03-03
  • axios學(xué)習(xí)教程全攻略

    axios學(xué)習(xí)教程全攻略

    axios 是一個(gè)基于Promise 用于瀏覽器和 nodejs 的 HTTP 客戶端,下面這篇文章主要給大家介紹了axios學(xué)習(xí)教程的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友下面來(lái)一起看看吧。
    2017-03-03
  • JavaScript跨平臺(tái)的開(kāi)源框架NativeScript

    JavaScript跨平臺(tái)的開(kāi)源框架NativeScript

    本文給大家分享的是一款使用javascript來(lái)構(gòu)建跨平臺(tái)原生移動(dòng)應(yīng)用的開(kāi)源框架--NativeScript,可以使用JavaScript開(kāi)發(fā)跨平臺(tái)、真正原生的iOS, Android 和 Windows 移動(dòng)App。開(kāi)發(fā)人員使用NativeScript提供的庫(kù)來(lái)構(gòu)建應(yīng)用UI,其抽象了各種原生平臺(tái)之間的不同。
    2015-03-03
  • 微信小程序?qū)崿F(xiàn)自定義picker選擇器彈窗內(nèi)容

    微信小程序?qū)崿F(xiàn)自定義picker選擇器彈窗內(nèi)容

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)自定義picker選擇器彈窗內(nèi)容,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • javascript showModalDialog傳值與FireFox的window.open 父子窗口傳值示例

    javascript showModalDialog傳值與FireFox的window.open 父子窗口傳值示例

    javascript showModalDialog傳值與FireFox的window.open 父子窗口傳值示例代碼。
    2009-11-11
  • 5分鐘快速掌握J(rèn)S中var、let和const的異同

    5分鐘快速掌握J(rèn)S中var、let和const的異同

    在javascript中有三種聲明變量的方式:var、let、const,這個(gè)是對(duì)新手們來(lái)說(shuō)應(yīng)該掌握的知識(shí),所以這篇文章主要給大家介紹了關(guān)于如何通過(guò)5分鐘快速掌握J(rèn)S中var,let和const的異同,需要的朋友可以參考下
    2018-09-09
  • openlayers4.6.5實(shí)現(xiàn)距離量測(cè)和面積量測(cè)

    openlayers4.6.5實(shí)現(xiàn)距離量測(cè)和面積量測(cè)

    這篇文章主要為大家詳細(xì)介紹了openlayers4.6.5實(shí)現(xiàn)距離量測(cè)和面積量測(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • TypeScript中泛型的使用詳細(xì)講解

    TypeScript中泛型的使用詳細(xì)講解

    泛型程序設(shè)計(jì)(generic programming)是程序設(shè)計(jì)語(yǔ)言的一種風(fēng)格或范式,下面這篇文章主要給大家介紹了關(guān)于TypeScript中泛型使用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11

最新評(píng)論

吴旗县| 卢氏县| 太原市| 舞阳县| 丹江口市| 辉县市| 崇义县| 博野县| 姜堰市| 会泽县| 化州市| 铜梁县| 岳阳县| 昆明市| 景谷| 田东县| 嫩江县| 南安市| 凤冈县| 湟源县| 平顺县| 通州区| 石渠县| 龙井市| 宁海县| 宣威市| 郁南县| 兴化市| 恩施市| 灵武市| 虞城县| 新乡市| 苗栗市| 威信县| 美姑县| 长白| 黔西| 吕梁市| 阳新县| 贵州省| 攀枝花市|