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

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

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

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

測試用例:

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

方法一:借助于臨時數(shù)組與indexOf , 算法復雜度為: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;
}

測試結果:

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

bug 無法區(qū)分對象

方法二 : 用JavaScript中的Object對象來當作哈希表

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;
}

測試結果:

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

bug : 無法區(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;
}

測試結果:

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

方法三:先用sort對數(shù)組排序,然后借助臨時數(shù)組,存儲相同元素的最后一個,該方法只能用于純Number類型數(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:這里再為大家提供幾款相關工具供大家參考使用:

在線去除重復項工具:
http://tools.jb51.net/code/quchong

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

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數(shù)組操作技巧總結》、《JavaScript字符與字符串操作技巧總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript排序算法總結》、《JavaScript查找算法技巧總結》、《JavaScript數(shù)學運算用法總結》、《JavaScript數(shù)據(jù)結構與算法技巧總結》及《JavaScript錯誤與調試技巧總結

希望本文所述對大家JavaScript程序設計有所幫助。

相關文章

  • 解讀函數(shù)的節(jié)流與防抖問題

    解讀函數(shù)的節(jié)流與防抖問題

    這篇文章主要介紹了解讀函數(shù)的節(jié)流與防抖問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • javascript中的事件代理初探

    javascript中的事件代理初探

    本文僅僅起到一個拋磚引玉的作用,讓大家了解到事件代理的原理而已,jquery中的live和delegate實現(xiàn)要復雜的多
    2014-03-03
  • JavaScript內存泄漏的處理方式

    JavaScript內存泄漏的處理方式

    這篇文章主要介紹了JavaScript內存泄漏的處理方式,通過理論和實例結合的方式讓你理解的更加透徹。
    2017-11-11
  • javascript實例--教你實現(xiàn)撲克牌洗牌功能

    javascript實例--教你實現(xiàn)撲克牌洗牌功能

    我們一般都會按照順序把隨機摸過來的牌從小到大的順序在手上理整齊(記得小時候打牌兩副牌手都抓不過來),這篇隨筆就是想通過實現(xiàn)這個功能來熟悉下js中排序數(shù)組等相關知識。
    2014-05-05
  • JS與jQ讀取xml文件的方法

    JS與jQ讀取xml文件的方法

    本文通過代碼實例給大家講解js讀取xml文件及jq讀取xml文件的方法,對本文感興趣的朋友一起學習吧
    2015-12-12
  • JavaScript引用類型Function實例詳解

    JavaScript引用類型Function實例詳解

    這篇文章主要介紹了JavaScript引用類型Function,結合實例形式詳細分析了javascript引用類型Function概念、定義、原理、相關使用技巧與操作注意事項,需要的朋友可以參考下
    2018-08-08
  • js+css實現(xiàn)計算器功能

    js+css實現(xiàn)計算器功能

    這篇文章主要為大家詳細介紹了js+css實現(xiàn)計算器功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 原生JS實現(xiàn)頂部導航欄顯示按鈕+搜索框功能

    原生JS實現(xiàn)頂部導航欄顯示按鈕+搜索框功能

    這篇文章主要介紹了原生js實現(xiàn)頂部導航欄顯示按鈕+搜索框功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • 通過封裝scroll.js 獲取滾動條的值

    通過封裝scroll.js 獲取滾動條的值

    本文通過實例代碼給大家介紹了通過封裝scroll.js 獲取滾動條的值的相關知識,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-07-07
  • 完美解決mui框架off-canvas側滑超出部分隱藏無法滾動的問題

    完美解決mui框架off-canvas側滑超出部分隱藏無法滾動的問題

    下面小編就為大家分享一篇完美解決mui框架off-canvas側滑超出部分隱藏無法滾動的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01

最新評論