字串去重 陣列去重 物件去重 巢狀去重(全)

2021-10-01 20:16:11 字數 4463 閱讀 5251

去重這個詞,在我們程式設計師的日常中還是很常見的,字串、陣列、物件、巢狀形式的去重,各種去重應用場景,最近有空整理整理各種資料的去重方法,這裡整理的都是按照常規的資料,特殊的先不考慮,主要是看處理方法和思路。1.indexof 方法

const str =

'asdfasd'

const changestr =

(data)

=>

}return newstr

}//if()裡的條件判斷,判斷data和newstr都可以

console.

log(

changestr

(str)

)// "asdf"

2.search 方法
const str =

'asdfasd'

const changestr =

(data)

=>

}return newstr

}//if()裡的條件判斷,判斷data和newstr都可以

console.

log(

changestr

(str)

)// "asdf"

3.includes 方法
const str =

'asdfasd'

const changestr =

(data)

=>

}return newstr

}console.

log(

changestr

(str)

,'changestr'

)// "asdf"

4.set 方法
const str =

'asdfasd'

const changestr =

( data )

=>[.

..newset

(data)].

join(''

)//用es6的set去重,轉成陣列,再轉字串

console.

log(

changestr

( str )

,'changestr'

)// "asdf"

這裡雙重for迴圈就不講了,迴圈用少用,耗效能。

1.indexof 方法

const data =[1

,2,2

,4,5

,4]const changearr =

( data )

=>

//判斷當前下標與元素下標是否一致,一致說明是唯一的

//可以判斷newarr是否存在該值})

return newarr

}console.

log(

changearr

( data )

,'changearr'

)// [1, 2, 4, 5]

2.sort 方法
const data =[1

,2,2

,4,5

,4]const changearr =

( data )

=>

//先排序然後判斷當前下標與元素下標是否一致,一致說明是唯一的})

return newarr

}console.

log(

changearr

( data )

,'changearr'

)// [1, 2, 4, 5]

3.includes 方法
const data =[1

,2,2

,4,5

,4]const changearr =

( data )

=>

}return newarr

}console.

log(

changearr

( data )

,'changearr'

)// [1, 2, 4, 5]

4.set 方法
const data =[1

,2,2

,4,5

,4]const changearr =

( data )

=>

console.

log(

changearr

( data )

,'changearr'

)// [1, 2, 4, 5]

物件裡不會存在一樣的屬性名,每個屬性對應一塊固定記憶體

最終建立結果就是,後面的覆蓋前面的,物件的去重,主要就是object.keys()和object.values()轉成陣列,然後跟陣列一樣去重,以及hasownproperty的運用。

1.object+includes

//應用場景,新增了多個值,把物件裡值相同的去重

const data =

const changeobj =

(data)

=>

object.

keys

( data )

.map

(( item )

=>})

return newobj

}console.

log(

changeobj

( data )

,'changeobj'

)//

1.foreach 合併陣列內name重複的物件

要求陣列中的物件,擁有同樣name的,把資料去重合併到乙個物件裡

const data =[,

,,,,

]const changearr =

( data )

=>

if( data && data.length >0)

else})

}return newobj

}console.

log(

changearr

( data )

,'changearr'

)//

2.物件陣列根據物件的某key值去重
const data =[,

,,,]

const changearr =

( data )

=>

if( data && data.length >0)

)}return newobj

}console.

log(

changearr

( data )

,'changearr'

)// ,2: ,3: }

3.格式一致的物件陣列去重
轉成字串,就可以去重了,前提是資料格式是嚴格

const data =[,

,,]const changearr =

(data)

=>

console.

log(

changearr

(data)

)// ["", ""]

4.多維陣列去重

方法一

const data =[1

,[2,

3],[

3,2,

[1,6

,[3,

5,'3']]]

]const allarr =

newset()

//直接建立乙個set資料,後面去重用

const changearr =

(array)

=>

else}}

console.

log(

changearr

(data)

)console.

log([.

..allarr]

,'11111'

)// [1, 2, 3, 6, 5, "3"] "11111"

方法二

arr.flat()陣列的新方法,自動將維度

const data =[1

,[2,

3],[

3,2,

[1,6

,[3,

5,'3']]]

]const changearr =

(array)

=>

console.

log(

changearr

(data)

)

JS陣列去重,物件去重

例項1根據indexof去重,indexof的好處就是返回的是首次出現的位置,這樣後面即使出現的值一樣,也只能返回第一次出現的索引,當然這個只適用於簡單的陣列 物件陣列去重 const objarr const obj const newobjarr for let i 0 i objarr.len...

字串陣列去重

這裡只考慮最簡單字串的陣列去重,暫不考慮,物件,函式,nan等情況,這種用正則實現起來就吃力不討好了。非正則實現 es6實現 let str arr b c 1,a 3,v 2 e 6 g 9 arr 9,hello 6 9 1 2,6,b c function unique arr console...

字串去重

字串去重,思路是在乙個字串例如 strstrrtsiiiinnnggggg 中,遍歷所有的字元,拼接到stringbuffer中。在執行速度上來看stringbuffer的拼接速度要快與string。通過str.charat i 的方法得到當前遍歷到的字元。通過indexof方法得到該字元第一次出現...