去重這個詞,在我們程式設計師的日常中還是很常見的,字串、陣列、物件、巢狀形式的去重,各種去重應用場景,最近有空整理整理各種資料的去重方法,這裡整理的都是按照常規的資料,特殊的先不考慮,主要是看處理方法和思路。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方法得到該字元第一次出現...