JavaScript 數組去重的四種方法__javascript

來源:互聯網
上載者:User

四種方法都需要藉助一個臨時數組,並最終返回這個臨時數組。

(一)使用方法indexOf判斷當前元素是否已經存在於臨時數組中,如果不存在(結果返回-1),則push到臨時數組中。

function removeDuplicatedItem1(arr){            var retArr=[];            for(var i=0;i<arr.length;i++){                if(retArr.indexOf(arr[i])===-1){//===判斷值與類型是否完全相等,若類型不同也算不同的元素                    retArr.push(arr[i]);                }            }            return retArr;        }

(二)利用對象屬性的唯一性,把數組元素作為臨時建立的一個對象的屬性,若不存在則push

function removeDuplicatedItem2(arr){            var temp={};//建立的一個臨時對象,用於儲存數組元素作為其屬性            var retArr=[];            for(var i=0;i<arr.length;i++){                if(!temp[arr[i]]){//判斷屬性是否存在,當然也可以判斷當前屬性是否等於1                    temp[arr[i]]=1;//給當前屬性值賦值,避免為空白                    retArr.push(arr[i]);                }            }            return retArr;        }

(三) 使用forEach和indexOf相結合,判斷當前元素的下標值與indexOf返回的結果是否一致,若一致說明當前元素是第一次出現,則push到臨時數組中

function removeDuplicatedItem3(arr){            var retArr=[];            arr.forEach(function(item,i,ar){                if(arr.indexOf(item)==i){//判斷當前元素是否是第一次出現                    retArr.push(item);                }            });            return retArr;        }

(四)先對原數組排序,可以使用sort,因為只是讓相同的元素聚集到一起,對於定序沒有要求。用一個臨時變數temp儲存當前剛push進臨時數組的item,數組指標後移,如果此時指標所指的item與temp不相等,則push到臨時數組中,否則,指標接著後移,直到原數組結束。

function removeDuplicatedItem4(arr){            if(arr.length<=0){//提前判斷數組中是否有元素,防止數組越界                return -1;            }            var retArr=[];            arr.sort();            var nowItem=arr[0];//初始值儲存原數組中的第一個元素            retArr.push(nowItem);            for(var i=1;i<arr.length;i++){                if(arr[i]!=nowItem){                    retArr.push(arr[i]);                    nowItem=arr[i];//改變nowItem的值                }            }            return retArr;        }

參考資料:http://www.cnblogs.com/leonwang/p/4845576.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.