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

JavaScript數(shù)組去重的多種方法(四種)

 更新時間:2017年09月19日 09:08:49   投稿:mrr  
數(shù)組去重,一般需求是給你一個數(shù)組,調(diào)用去重方法,返回數(shù)值副本,副本中沒有重復(fù)元素。下面腳本之家小編給大家?guī)砹薺s數(shù)組去重的多種方法,非常不錯,需要的朋友參考下

數(shù)組去重,一般需求是給你一個數(shù)組,調(diào)用去重方法,返回數(shù)值副本,副本中沒有重復(fù)元素。一般來說,兩個元素通過 === 比較返回 true 的視為相同元素,需要去重,所以,1 和 "1" 是不同的元素,1 和 new Number(1) 是不同的元素,{} 和 {} 是不同的元素(引用不同)。(當(dāng)然如果需求認(rèn)為 {} 和 {} 算作相同的元素,那么解法就不一樣了)

method 1

使用兩重循環(huán)

function unique(arr) {
 var res = [];
 for(var i = 0, len = arr.length;i < len; i++) {
  var item = arr[i];
  for(var j = 0, jLen = res.length; j<jLen; j++) {
   if(item == res[j]) break;
  }
  if(j == jLen) res.push(item);
 }
 return res;
}

method 2

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

這里判斷可以使用一個語法糖

function unique(arr) {
 var res = [];
 for(var i = 0, len = arr.length;i < len; i++) {
  var item = arr[i];
  (res.indexOf(item) === -1) && res.push(item);
 }
 return res;
}

但是在低版本瀏覽器并沒有 indexOf

var indexOf = [].indexOf ?
 function(arr, item) {
  return arr.indexOf(item)
 } :
 function indexOf(arr, item) {
  for (var i = 0; i < arr.length; i++) {
  if (arr[i] === item) {
   return i
  }
  }
  return -1
 }
function unique(arr) {
 var ret = []
 for (var i = 0; i < arr.length; i++) {
 var item = arr[i]
 if (indexOf(ret, item) === -1) {
  ret.push(item)
 }
 }
 return ret
}

method3

使用兩重循環(huán)的另外一種比較方式,前面是將原數(shù)組的元素和結(jié)果數(shù)組一一比較,下面我們可以將原數(shù)組的重復(fù)元素的最后一個元素放入數(shù)組中

function unique(arr) {
 var ret = [];
 var len = arr.length;
 var isRepeat;
 for(var i=0; i<len; i++) {
  isRepeat = false;
  for(var j=i+1; j<len; j++) {
   if(arr[i] === arr[j]){
    isRepeat = true;
    break;
   }
  }
  if(!isRepeat){
   ret.push(arr[i]);
  }
 }
 return ret;
}

這里還有一個優(yōu)化的版本

function unique(a) {
 var res = [];
 for (var i = 0, len = a.length; i < len; i++) {
 for (var j = i + 1; j < len; j++) {
  // 這一步十分巧妙
  // 如果發(fā)現(xiàn)相同元素
  // 則 i 自增進入下一個循環(huán)比較
  if (a[i] === a[j])
  j = ++i; //j = i = i + 1;
 }
 res.push(a[i]);
 }
 return res;
}

method4

用 javascript 中的 object 對象來當(dāng)作 哈希表

function dedup(arr) {
 var hashTable = {};
 return arr.filter(function(value,index,arr){
  var key = JSON.stringify(value);
  var match = Boolean(hashTable[key]);
  return (match ? false : hashTable[key] = true);
 });
}

因為 Object 的 key 值都是 String 類型,所以對于 1 和 "1" 無法分別,我們可以稍微改進下,將類型也存入 key 中

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

總結(jié)

以上所述是小編給大家介紹的JavaScript數(shù)組去重的多種方法(四種),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • javascript 事件處理程序介紹

    javascript 事件處理程序介紹

    javascript 事件處理程序介紹,學(xué)習(xí)js的朋友可以參考下
    2012-06-06
  • 一段非常簡單的js判斷瀏覽器的內(nèi)核

    一段非常簡單的js判斷瀏覽器的內(nèi)核

    先說明,此處的方法是說超級簡單的方法,不是指代碼超級少,而是用非常簡單的知識點,只要懂得怎么寫JavaScript的行內(nèi)樣式就可以判斷。
    2014-08-08
  • 使用JS解析excel文件的完整實現(xiàn)步驟

    使用JS解析excel文件的完整實現(xiàn)步驟

    解析excel文件是我們?nèi)粘i_發(fā)中經(jīng)常遇到的一個需求,下面這篇文章主要給大家介紹了關(guān)于使用JS解析excel文件的完整實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • Javascript多種瀏覽器兼容寫法分析

    Javascript多種瀏覽器兼容寫法分析

    隨著以Firefox為代表的第三方瀏覽器的興起,我們做的網(wǎng)站也不能再JUST IE了,如果把原來的一些javascript代碼放到IE以外的瀏覽器的話,往往都不能正常運行或出錯,所以這里介紹一下怎么改進我們的JS,讓它能更加規(guī)范,更加具有兼容性。
    2008-09-09
  • 用js判斷是否為360瀏覽器的實現(xiàn)代碼

    用js判斷是否為360瀏覽器的實現(xiàn)代碼

    這篇文章主要介紹了用js判斷是否為360瀏覽器的實現(xiàn)代碼,有時候我們需要判斷是否為360瀏覽器,包括百度聯(lián)盟后臺就有這樣的提示需要的朋友可以參考下
    2015-01-01
  • 詳解javascript實現(xiàn)瀑布流絕對式布局

    詳解javascript實現(xiàn)瀑布流絕對式布局

    這篇文章主要介紹了javascript實現(xiàn)瀑布流的兩種布局方式,一是絕對式布局、二是列式布局,詳細(xì)介紹了這兩種布局方式的原理,感興趣的小伙伴們可以參考一下
    2016-01-01
  • Ionic默認(rèn)的Tabs模板使用實例

    Ionic默認(rèn)的Tabs模板使用實例

    這篇文章主要為大家詳細(xì)介紹了Ionic默認(rèn)的Tabs模板使用實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • mui 打開新窗口的方式總結(jié)及注意事項

    mui 打開新窗口的方式總結(jié)及注意事項

    這篇文章主要介紹了mui 打開新窗口的方式總結(jié)及注意事項,需要的朋友可以參考下
    2017-08-08
  • JS實現(xiàn)可用滑塊滑動的緩動圖代碼

    JS實現(xiàn)可用滑塊滑動的緩動圖代碼

    這篇文章主要介紹了JS實現(xiàn)可用滑塊滑動的緩動圖代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • js下將金額數(shù)字每三位一逗號分隔

    js下將金額數(shù)字每三位一逗號分隔

    這篇文章主要介紹了js下將金額數(shù)字每三位一逗號分隔的相關(guān)資料,還附加了一個小功能,小數(shù)位保留兩位,感興趣的小伙伴們可以參考一下
    2016-02-02

最新評論

萍乡市| 临夏市| 社会| 鱼台县| 丹凤县| 拜泉县| 洞头县| 安化县| 靖边县| 澄江县| 教育| 垣曲县| 响水县| 洪湖市| 林甸县| 兴城市| 米脂县| 东乌珠穆沁旗| 镇平县| 张家口市| 岑溪市| 韶山市| 卢氏县| 青铜峡市| 嘉黎县| 延长县| 泰和县| 商南县| 白水县| 蚌埠市| 板桥市| 泗水县| 海门市| 宜章县| 宜都市| 吉隆县| 潮州市| 玛沁县| 台山市| 凌云县| 扎兰屯市|