1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      使用Javascript怎么實(shí)現(xiàn)數(shù)組去重-創(chuàng)新互聯(lián)

      使用Javascript怎么實(shí)現(xiàn)數(shù)組去重?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

      專注于為中小企業(yè)提供成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)冠縣免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

      第一種用instenceof方法

      instanceof是ES5提供的一個(gè)方法,它可以用來(lái)判斷實(shí)例是否是某個(gè)類的實(shí)例,例如:

      [] instenceof Array
      //返回結(jié)果是true

      這種方法的不好之處就是兼容性不好,對(duì)于一些低版本瀏覽器不支持ES5的就要懵逼了。

      第二種方法是通過(guò)原型鏈的方式來(lái)判斷

      了解js的話都應(yīng)該懂得js這個(gè)語(yǔ)言的特點(diǎn)就是原型鏈?zhǔn)降模械膶?duì)象都繼承自Object.prototype,而prototype上又有toString()方法,這個(gè)toString()方法是干什么用的呢?就是以字符串的形式返回當(dāng)前對(duì)象的值。第一次看可能這句話可能不大明白,舉個(gè)例吧:

      var num = 123;
      num.toString(); //返回結(jié)果為"123"

      有沒(méi)有看明白一點(diǎn)?就是返回num這個(gè)對(duì)象值的字符串形式,也就是”123”。好了,這跟判斷數(shù)組有什么關(guān)系?想一下所有的對(duì)象都繼承自Object.prototype,數(shù)組也是啊,如果把一個(gè)數(shù)組送到Object.prototype里作為一個(gè)“值”,在調(diào)用toString()方法,那它應(yīng)該顯示出這個(gè)對(duì)象的名字才對(duì)啊,這就是判斷的原理,代碼如下:

      Object.prototype.toString.call([]); //結(jié)果是"[object Array]"

      像jQuery這樣的腳本庫(kù)的isArray()用的就是這個(gè)方法。

      數(shù)組拍平

      說(shuō)完判直奔主題,先是數(shù)組拍平,什么是數(shù)組拍平呢?就是把[1,[2,[3,4],5]]鋪成[1,2,3,4,5]。關(guān)于數(shù)組拍平我有兩種思路,第二種比較奇葩,留點(diǎn)懸念吧哈哈。

      第一種是常規(guī)思路

      對(duì)數(shù)組進(jìn)行遍歷,如果數(shù)組里面套著數(shù)組就繼續(xù)遍歷里面的,直到把每個(gè)元素都遍歷完,然后一邊遍歷一邊塞入新的數(shù)組變量里,這樣就完成拍平了,具體代碼如下:

      panelArr = function(arr){
       var newArr = [];
       var isArray = function(obj) {
        return Object.prototype.toString.call(obj) === '[object Array]';
       };
       var dealArr = function(arr){
        for (var i = 0;i

      當(dāng)然這個(gè)方法也可以寫(xiě)在Array.prototype里,使用起來(lái)更方便。這個(gè)方法有個(gè)問(wèn)題就是內(nèi)存占用上,因?yàn)椴捎眠f歸如果數(shù)據(jù)量大了會(huì)占用大量大量?jī)?nèi)存。

      第二種奇葩思路

      第二種思路就是不把數(shù)組來(lái)看,也不遍歷了直接拍平。聽(tīng)起來(lái)略奇怪,怎么能不遍歷就拍平?就是使用join()方法,將數(shù)組轉(zhuǎn)換成字符串,然后正則去掉符號(hào)最后合并,這個(gè)方法在使用注意不能join(""),因?yàn)槿绻@樣分割的話,13是1和3還是13?不好區(qū)分,代碼如下:

      var arr = [1,2,[33,43],20,19];
      arr.join(".").replace(/,/g,".").split("."); //["1", "2", "33", "43", "20", "19"]

      注意:這個(gè)方法會(huì)轉(zhuǎn)換數(shù)據(jù)類型成字符串。

      數(shù)組去重

      下面是數(shù)組去重,舉例來(lái)說(shuō)就是[1,2,3,3,4,5,5,5,6]變成[1,2,3,4,5,6]。這個(gè)實(shí)現(xiàn)的核心就是去重這里,如果能夠快速判斷元素是否重復(fù)就是關(guān)鍵。

      還是兩種思路

      第一種遍歷的思路

      就是準(zhǔn)備一個(gè)新的數(shù)組變量,塞入前每次對(duì)這個(gè)變量進(jìn)行遍歷看看是否有重復(fù)的,如果沒(méi)有就塞入,最后生成的新數(shù)組就是去重后的數(shù)組了。示例代碼如下:

      function uniqueArr(arr){
       var newArr = [];
       newArr.push(arr[0]);
       for(var i = 1; i

      第二種使用哈希判斷

      上面那個(gè)時(shí)間復(fù)雜度為O(n^2)的方法并不是什么好方法,它的瓶頸就是判斷是否重復(fù)這里,所以我們換成一個(gè)更高效的檢索是否重復(fù)的方法,這個(gè)方法就是哈希,為什么哈希檢索最快?翻翻數(shù)據(jù)結(jié)構(gòu)吧,這里就不在贅述了。

      這個(gè)方法的思路就是在原始數(shù)組和去重?cái)?shù)組之間加入一個(gè)哈希過(guò)濾,總的來(lái)看就是原數(shù)組數(shù)據(jù)交給哈希,看是否有重復(fù),若是沒(méi)有則添加進(jìn)去。具體代碼如下:

      function uniqueArr(arr){
       var newArr = [],
       hashFilter = {};
       for(var i = 0;i

      看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)建站的支持。

      另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、建站服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


      網(wǎng)頁(yè)名稱:使用Javascript怎么實(shí)現(xiàn)數(shù)組去重-創(chuàng)新互聯(lián)
      標(biāo)題鏈接:http://www.ef60e0e.cn/article/shesd.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        临猗县| 衡阳市| 临湘市| 潮州市| 祁连县| 庆云县| 教育| 房产| 江门市| 凌云县| 安达市| 平远县| 嘉鱼县| 澄城县| 喀喇沁旗| 朝阳区| 兴义市| 甘洛县| 西昌市| 乐至县| 米林县| 乌拉特中旗| 仁布县| 固原市| 饶阳县| 丹寨县| 宁蒗| 隆子县| 安顺市| 肇东市| 沅江市| 城口县| 会昌县| 定西市| 长子县| 鹤峰县| 西和县| 北安市| 尚志市| 宜州市| 荆门市|