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

資訊專欄INFORMATION COLUMN

20170614-數(shù)組去重

0x584a / 809人閱讀

測試用例
var arr = [1,1,"1","1",0,0,"0","0",undefined,undefined,null,null,NaN,NaN,{},{},[],[],/a/,/a/]
indexOf
function unique(arr){
    var temp = []
    for(var i=0;i [ 1, "1", 0, "0", undefined, null, {}, {}, [], [], /a/, /a/ ]

NaN丟失

function unique(arr){
    var temp = []
    arr.forEach(function(item){
        if(temp.indexOf(item) === -1){
            temp.push(item)
        }
    })
    return temp
}
console.log(unique(arr))
> [ 1, "1", 0, "0", undefined, null, NaN, NaN, {}, {}, [], [], /a/, /a/ ]

NaN重復(fù)

indexOf認(rèn)為NaN與NaN是不重復(fù)的

includes
function unique(arr){
    var temp = []
    for(var i=0;i  [1, "1", 0, "0", undefined, null, NaN, {}, {}, [], [], /a/, /a/]

includes認(rèn)為NaN和NaN是重復(fù)的

===
function unique(arr){
    var temp = []
    var isRepeat = false
    for(var i=0;i [1, "1", 0, "0", undefined, null, NaN, NaN, {}, {}, [], [], /a/,/a/]

NaN重復(fù)

使用對象實(shí)現(xiàn)數(shù)組去重及改進(jìn)
function unique(arr){
    var obj = {}
    var temp = []
    for(var i=0;i [ 1, 0, undefined, null, NaN, {}, [], /a/ ]

無法區(qū)分隱式類型轉(zhuǎn)換成字符串后一樣的值,比如1和"1"

無法處理復(fù)雜數(shù)據(jù)類型,比如對象(因?yàn)閷ο笞鳛閗ey會(huì)變成[object Object])

改進(jìn)1
function unique(arr){
    var obj = {}
    var temp = []
    var key
    for(var i=0;i [ 1, "1", 0, "0", undefined, null, NaN, {}, [], /a/ ]
改進(jìn)2
function unique(arr){
    var obj = {}
    var temp = []
    var key
    for(var i=0;i [ 1, "1", 0, "0", undefined, null, NaN, {}, [] ]
map
function unique(arr){
    var temp = []
    var map = new Map()
    for(var i=0; i [ 1, "1", 0, "0", undefined, null, NaN, {}, {}, [], [], /a/, /a/ ]
set
function unique(arr){
    var set = new Set(arr)
    return Array.from(set)
}
console.log(unique(arr))
> [ 1, "1", 0, "0", undefined, null, NaN, {}, {}, [], [], /a/, /a/ ]
各種方法比較

總結(jié)

數(shù)組去重需要根據(jù)場景選擇合適的去重方法,沒有固定的答案。

參考資料

談JavaScript數(shù)組去重

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

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

相關(guān)文章

  • JS數(shù)組去重總結(jié)

    摘要:數(shù)組去重,一般會(huì)在面試的時(shí)候才會(huì)碰到,要求手寫數(shù)組去重方法的代碼。在實(shí)際項(xiàng)目中碰到的數(shù)組去重,一般都是后臺(tái)去處理,很少讓前端處理數(shù)組去重。數(shù)組去重的方法一利用去重中最常用如果不考慮兼容性,這種去重的方法代碼最少。 數(shù)組去重,一般會(huì)在面試的時(shí)候才會(huì)碰到,要求手寫數(shù)組去重方法的代碼。如果是被提問到,數(shù)組去重的方法有哪些?你能答出其中的10種,面試官很有可能對你刮目相看。 在實(shí)際項(xiàng)目中碰到的...

    whinc 評論0 收藏0
  • 跟underscore一起學(xué)數(shù)組去重

    摘要:引子數(shù)組去重是一個(gè)老生常談的話題,在面試中也經(jīng)常會(huì)被問道。其中如果數(shù)組是排序的,去重運(yùn)算效率更高,因?yàn)榕判蚰軌驅(qū)⑾嗤臄?shù)排列在一起,方便前后比較。當(dāng)數(shù)組有序?qū)τ趯ο蟮娜ブ兀覀冎罏椋允褂帽容^對象在實(shí)際場景中沒有意義。 引子 數(shù)組去重是一個(gè)老生常談的話題,在面試中也經(jīng)常會(huì)被問道。對于去重,有兩種主流思想: 先排序,線性遍歷后去重,時(shí)間復(fù)雜度O(n*log2n); 使用哈希,空間換...

    flybywind 評論0 收藏0
  • JavaScript專題之數(shù)組去重

    摘要:專題系列第三篇,講解各種數(shù)組去重方法,并且跟著寫一個(gè)前言數(shù)組去重方法老生常談,既然是常談,我也來談?wù)劇K愃朴跀?shù)組,但是成員的值都是唯一的,沒有重復(fù)的值。 JavaScript 專題系列第三篇,講解各種數(shù)組去重方法,并且跟著 underscore 寫一個(gè) unique API 前言 數(shù)組去重方法老生常談,既然是常談,我也來談?wù)劇?雙層循環(huán) 也許我們首先想到的是使用 indexOf 來循...

    fsmStudy 評論0 收藏0
  • JavaScript數(shù)組去重(12種方法,史上最全)

    摘要:數(shù)組去重,一般都是在面試的時(shí)候才會(huì)碰到,一般是要求手寫數(shù)組去重方法的代碼。如果是被提問到,數(shù)組去重的方法有哪些你能答出其中的種,面試官很有可能對你刮目相看。數(shù)組去重的方法一利用去重中最常用不考慮兼容性,這種去重的方法代碼最少。 數(shù)組去重,一般都是在面試的時(shí)候才會(huì)碰到,一般是要求手寫數(shù)組去重方法的代碼。如果是被提問到,數(shù)組去重的方法有哪些?你能答出其中的10種,面試官很有可能對你刮目相看...

    rozbo 評論0 收藏0

發(fā)表評論

0條評論

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