成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

數(shù)組去重常見(jiàn)方法

kyanag / 2261人閱讀

摘要:你不知道的數(shù)組去重雙重循環(huán)時(shí)間復(fù)雜度空間復(fù)雜度優(yōu)點(diǎn)兼容性好,缺點(diǎn)代碼較多,時(shí)間復(fù)雜度也高。它類(lèi)似于數(shù)組,但是成員的值都是唯一的,沒(méi)有重復(fù)的值。

你不知道的數(shù)組去重

1. 雙重循環(huán)

  var arr = [4, 4, 2, "2", 1]
  function unique1(array) {
    var res = []
    for (let i = 0; i < arr.length; i++) {
      for (var j = 0; j < res.length; j++) {
        if (arr[i] === res[j]) {
          break;
        }
      }
      if (j === res.length) {
        res.push(arr[i])
      }
    }
    return res
  }
  console.log("unique1", unique1(arr))

時(shí)間復(fù)雜度 o(n^2) 空間復(fù)雜度 o(n)

優(yōu)點(diǎn): 兼容性好,

缺點(diǎn): 代碼較多, 時(shí)間復(fù)雜度也高。

2. indexOf

返回 某個(gè)指定字符串在字符串中首次出現(xiàn)的位置, 如果沒(méi)有匹配到返回 -1
  function unique2(array) { 
    var res = []
    for (let i = 0; i < arr.length; i++) {
      var current = arr[i]
      if (res.indexOf(current) === -1) {
        res.push(arr[i]);
      }
    }
    return res
  }
  console.log("indexOf: " + unique2(arr))

// 簡(jiǎn)化代碼

  function unique3(array) {
    var res = array.filter((item, index, array) => {
      return array.indexOf(item) === index
    })
    return res

  }
  console.log("indexOf: " + unique2(arr))
}

時(shí)間復(fù)雜度 o(n)

排序去重 sort

sort(compareFunction) 排序原理

如果不寫(xiě)compareFunction 的話會(huì)按照Unicode字符編碼去排序也就有時(shí)候我們會(huì)看到
800 會(huì)排在 9 前面

function compareFunction(a, b) {

return a - b;
}

compareFunction(a, b) 返回結(jié)果 小于0則按照升序排列;

大于0按照降序排列

等于0保持原來(lái)順序

function unique3(array) {
  var res = []
  
  var array = arr.sort()
  var current = array[0]
  for (let i=0; i

ES6 Set

ES6 提供了新的數(shù)據(jù)結(jié)構(gòu) Set。它類(lèi)似于數(shù)組,但是成員的值都是唯一的,沒(méi)有重復(fù)的值。
//  Array.from方法可以將 Set 結(jié)構(gòu)轉(zhuǎn)為數(shù)組
function unique4(arr) {
    return Array.from(new Set(arr))
  }
  let arr = ["1", 2, 1, "A", "A", "a", 1, 2];
  console.log("Set", unique4(arr))
  // or
function unique4(arr) {
  return [...new Set(arr)]
}
let arr = ["1", 2, 1, "A", "A", "a", 1, 2];
console.log("Set", unique4(arr))

Map ES6

?       一個(gè)Map對(duì)象在迭代時(shí)會(huì)根據(jù)對(duì)象中元素的插入順序來(lái)進(jìn)行 — 一個(gè)  for...of 循環(huán)在每次迭代后會(huì)返回一個(gè)形式為[key,value]的數(shù)組。

? 方法has() 返回一個(gè)bool值,用來(lái)表明map 中是否存在指定元素.

? set() 方法為 Map 對(duì)象添加或更新一個(gè)指定了鍵(key)和值(value)的(新)鍵值對(duì)

  function unique6(arr) {
    const temp = new Map()
    return arr.filter((a) => !temp.has(a) && temp.set(a, 1))
  }
  let arr = ["1", 2, 1, "A", "A", "a", 1, 2]; 
  console.log("unique6   " + unique6(arr))

閱讀原文了解更多


【作者簡(jiǎn)介】 Mars 蘆葦科技web前端開(kāi)發(fā)工程師 喜歡 看電影 ,擼鐵 還有學(xué)習(xí)。擅長(zhǎng) 微信小程序開(kāi)發(fā), 系統(tǒng)管理后臺(tái)。訪問(wèn) www.talkmnoney.cn了解更多。

作者主頁(yè):

github

segmentfault

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/105612.html

相關(guān)文章

  • js常見(jiàn)算法(一):排序,數(shù)組去重,打亂數(shù)組,統(tǒng)計(jì)數(shù)組各個(gè)元素出現(xiàn)的次數(shù), 字符串各個(gè)字符的出現(xiàn)次數(shù)

    摘要:排序,數(shù)組去重,打亂數(shù)組,統(tǒng)計(jì)數(shù)組各個(gè)元素出現(xiàn)的次數(shù),字符串各個(gè)字符的出現(xiàn)次數(shù),獲取地址鏈接的各個(gè)參數(shù)以后會(huì)記錄自己解決過(guò)和遇到過(guò)的算法相關(guān)的題,系列一就以常見(jiàn)的開(kāi)篇吧。 排序,數(shù)組去重,打亂數(shù)組,統(tǒng)計(jì)數(shù)組各個(gè)元素出現(xiàn)的次數(shù), 字符串各個(gè)字符的出現(xiàn)次數(shù),獲取地址鏈接的各個(gè)參數(shù) 以后會(huì)記錄自己解決過(guò)和遇到過(guò)的算法相關(guān)的題,系列一就以常見(jiàn)的開(kāi)篇吧。 排序 本來(lái)想多列幾個(gè)排序方法,但是其它都...

    DTeam 評(píng)論0 收藏0
  • 常見(jiàn)數(shù)組去重方法

    摘要:語(yǔ)法對(duì)數(shù)組進(jìn)行排序,然后兩兩比較法對(duì)數(shù)組進(jìn)行排序定義新數(shù)組遍歷數(shù)組將的最后一項(xiàng)與數(shù)組的單項(xiàng)進(jìn)行對(duì)比,相等則添加到新數(shù)組利用對(duì)象屬性的唯一性判斷是否有的屬性方法可返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置,沒(méi)有則返回 1.es6 語(yǔ)法 new Set() function unique(arr){ return new Set(arr) } 2.對(duì)數(shù)組進(jìn)行排序,然后兩兩比較法 f...

    sf190404 評(píng)論0 收藏0
  • JS數(shù)組去重方法小結(jié)

    摘要:數(shù)組去重看了網(wǎng)上很多數(shù)組去重方法,用的比較常見(jiàn)的大概就幾種,今天想自己來(lái)做一個(gè)總結(jié)。還有就是方法返回的數(shù)組也是排序后的數(shù)組,某些情況下可能不符合要求。 JS數(shù)組去重 看了網(wǎng)上很多數(shù)組去重方法,用的比較常見(jiàn)的大概就幾種,今天想自己來(lái)做一個(gè)總結(jié)。部分內(nèi)容參考該博客 1 . 在原數(shù)組上操作(基本方法) 思路:利用循環(huán)嵌套,判斷數(shù)組中每個(gè)元素與其后面的元素是否相等,如果相等,就使用spli...

    PascalXie 評(píng)論0 收藏0
  • 案例 - 收藏集 - 掘金

    摘要:同行這么做使用實(shí)現(xiàn)圓形進(jìn)度條前端掘金在開(kāi)發(fā)微信小程序的時(shí)候,遇到圓形進(jìn)度條的需求。實(shí)現(xiàn)也談數(shù)組去重前端掘金的數(shù)組去重是一個(gè)老生常談的話題了。百度前端技術(shù)學(xué)院自定義前端掘金一標(biāo)簽概念元素表示用戶(hù)界面中項(xiàng)目的標(biāo)題。 閑話圖片上傳 - 掘金作者:孫輝,美團(tuán)金融前端團(tuán)隊(duì)成員。15年畢業(yè)加入美團(tuán),相信技術(shù),更相信技術(shù)只是大千世界里知識(shí)的一種,個(gè)人博客: https://sunyuhui.com ...

    張金寶 評(píng)論0 收藏0
  • 案例 - 收藏集 - 掘金

    摘要:同行這么做使用實(shí)現(xiàn)圓形進(jìn)度條前端掘金在開(kāi)發(fā)微信小程序的時(shí)候,遇到圓形進(jìn)度條的需求。實(shí)現(xiàn)也談數(shù)組去重前端掘金的數(shù)組去重是一個(gè)老生常談的話題了。百度前端技術(shù)學(xué)院自定義前端掘金一標(biāo)簽概念元素表示用戶(hù)界面中項(xiàng)目的標(biāo)題。 閑話圖片上傳 - 掘金作者:孫輝,美團(tuán)金融前端團(tuán)隊(duì)成員。15年畢業(yè)加入美團(tuán),相信技術(shù),更相信技術(shù)只是大千世界里知識(shí)的一種,個(gè)人博客: https://sunyuhui.com ...

    huangjinnan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<