国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

關(guān)于js數(shù)組去重

callmewhy / 1429人閱讀

摘要:測(cè)試排序后相鄰去除法思路先將數(shù)組經(jīng)過(guò)排序,這時(shí)候相同的元素處于相鄰的位置所以在便利數(shù)組的時(shí)候我們只將與前一值不重復(fù)的值注意這里測(cè)試中方式補(bǔ)充這種方式兼容性但是可以通過(guò)轉(zhuǎn)不太好,但是非常簡(jiǎn)潔。

不管是面試還是平時(shí)寫(xiě)程序的過(guò)程中我們經(jīng)常會(huì)遇到要對(duì)數(shù)組進(jìn)行去重的問(wèn)題,該文總結(jié)了一些常見(jiàn)的數(shù)組去重的方法。

對(duì)象鍵值對(duì)法

思路:新建一js對(duì)象json以及新數(shù)組reArr,遍歷數(shù)組元素是否為json的鍵,不是則創(chuàng)建,是則判斷元素的類(lèi)型在鍵對(duì)應(yīng)的值中是否存在。

    function unique(array){
      var json = {}, reArr = [], len = array.length, val, type;
        for (var i = 0; i < len ; i++) {
            val = array[i];
            type = Object.prototype.toString.call(val);
            if (!json[val]) {//如果鍵對(duì)應(yīng)的值不存在則是第一次存取
                json[val] = [type];//設(shè)置該鍵為數(shù)組,并賦值元素類(lèi)型
                reArr.push(val);//往reArr中添加元素
            } else if (json[val].indexOf(type) < 0) {
                json[val].push(type);
                reArr.push(val);
            }
        }
        return reArr;
    }
//該方法有bug,當(dāng)有多個(gè){}時(shí),只能保存一個(gè){} 

測(cè)試

遍歷數(shù)組法

思路:新建一新數(shù)組,遍歷傳入的數(shù)組,值不在新數(shù)組就加入該新數(shù)組中;該方法最主要的是要使用ES5中的indexOf方法。但是ie8一下不支持,所以需要做一些兼容

    if (!Array.prototype.indexOf){
      Array.prototype.indexOf = function(item){
        if (this.length == 0){
          return -1;
        }
        for(var i = 0, len = this.length; i < len; i++){
          if (this[i] === item){//注意是三個(gè)等號(hào)
            return i
            break;
          }  
        }
        return -1;
      }
}

去重代碼

function unique(array){
  var reArr = []; 
  for(var i = 0; i < array.length; i++){
    if (reArr.indexOf(array[i]) == -1){//判斷元素是否在數(shù)組中已經(jīng)存在
       reArr.push(array[i]);
    } 
  }
  return reArr;
}

測(cè)試

數(shù)組下標(biāo)判斷法

思路:將傳入的數(shù)組的第一項(xiàng)目添加到一個(gè)新的數(shù)組,后遍歷傳入的數(shù)組中的元素利用indexOf方法,若返回值與循環(huán)中的索引不同則是重復(fù)的元素。

    function unique(array){
        var reArr=[];
            reArr[0]=array[0];
        for(var i=1;i

測(cè)試

排序后相鄰去除法

思路:先將數(shù)組經(jīng)過(guò)sort排序,這時(shí)候相同的元素處于相鄰的位置,所以在便利數(shù)組的時(shí)候我們只將與前一值不重復(fù)的值

    function unique(array){
        var reArr=[array[0]];
        var len=array.length;
            array.sort();
        for(var i=1;i

測(cè)試

es6中Set方式(2017-8-25補(bǔ)充)

這種方式兼容性(但是可以通過(guò)babel轉(zhuǎn))不太好,但是非常簡(jiǎn)潔。

function uniq (array) {
  return [...new Set(array)]
}

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/91551.html

相關(guān)文章

  • JavaScript 實(shí)現(xiàn)數(shù)組更多的高階函數(shù)

    摘要:實(shí)現(xiàn)數(shù)組更多的高階函數(shù)吾輩的博客原文場(chǎng)景雖說(shuō)人人平等,但有些人更加平等。若是有一篇適合萌新閱讀的自己實(shí)現(xiàn)數(shù)組更多操作的文章,情況或許會(huì)發(fā)生一些變化。類(lèi)似于的初始值,但它是一個(gè)函數(shù),避免初始值在所有分組中進(jìn)行累加。 JavaScript 實(shí)現(xiàn)數(shù)組更多的高階函數(shù) 吾輩的博客原文: https://blog.rxliuli.com/p/fc... 場(chǎng)景 雖說(shuō)人人平等,但有些人更加平等。 為...

    aervon 評(píng)論0 收藏0
  • 也談面試必備問(wèn)題之 JavaScript 數(shù)組去重

    摘要:而數(shù)組元素去重是基于運(yùn)算符的。而如果有迭代函數(shù),則計(jì)算傳入迭代函數(shù)后的值,對(duì)值去重,調(diào)用方法,而該方法的核心就是調(diào)用方法,和我們上面說(shuō)的方法一異曲同工。 Why underscore (覺(jué)得這部分眼熟的可以直接跳到下一段了...) 最近開(kāi)始看 underscore.js 源碼,并將 underscore.js 源碼解讀 放在了我的 2016 計(jì)劃中。 閱讀一些著名框架類(lèi)庫(kù)的源碼,就好像...

    Coly 評(píng)論0 收藏0
  • 前端空間 - 收藏集 - 掘金

    摘要:封裝手寫(xiě)的方筆記使用檢測(cè)文件前端掘金副標(biāo)題可以做什么以及使用中會(huì)遇到的坑。目的是幫助人們用純中文指南實(shí)現(xiàn)復(fù)選框中多選功能前端掘金作者緝熙簡(jiǎn)介是推出的一個(gè)天挑戰(zhàn)。 深入理解 JavaScript Errors 和 Stack Traces - 前端 - 掘金譯者注:本文作者是著名 JavaScript BDD 測(cè)試框架 Chai.js 源碼貢獻(xiàn)者之一,Chai.js 中會(huì)遇到很多異常處理...

    you_De 評(píng)論0 收藏0
  • 前端空間 - 收藏集 - 掘金

    摘要:封裝手寫(xiě)的方筆記使用檢測(cè)文件前端掘金副標(biāo)題可以做什么以及使用中會(huì)遇到的坑。目的是幫助人們用純中文指南實(shí)現(xiàn)復(fù)選框中多選功能前端掘金作者緝熙簡(jiǎn)介是推出的一個(gè)天挑戰(zhàn)。 深入理解 JavaScript Errors 和 Stack Traces - 前端 - 掘金譯者注:本文作者是著名 JavaScript BDD 測(cè)試框架 Chai.js 源碼貢獻(xiàn)者之一,Chai.js 中會(huì)遇到很多異常處理...

    lwx12525 評(píng)論0 收藏0
  • 總結(jié)了一下js中的差集、交集、并集

    摘要:前言總結(jié)了一下有關(guān)于數(shù)組的差集交集并集的方法的方法實(shí)現(xiàn)去重簡(jiǎn)單的數(shù)組去重請(qǐng)傳入數(shù)組類(lèi)型并集簡(jiǎn)單數(shù)組的并集交集簡(jiǎn)單數(shù)組的交集差集簡(jiǎn)單數(shù)組的差集的方法實(shí)現(xiàn)去重簡(jiǎn)單的數(shù)組去重請(qǐng)傳入數(shù)組類(lèi)型交集簡(jiǎn)單數(shù)組的交集請(qǐng)都傳入數(shù)組類(lèi)型并集簡(jiǎn)單數(shù)組的并集請(qǐng)都傳 前言 總結(jié)了一下有關(guān)于數(shù)組的差集、交集、并集的方法; es6的方法實(shí)現(xiàn) 去重 /** * 簡(jiǎn)單的數(shù)組去重 * @param {Array} a...

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

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

0條評(píng)論

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