js多層物件陣列 合併 JS物件陣列合併去重?

2021-10-20 21:16:38 字數 827 閱讀 1226

陣列去重,一般會在面試的時候才會碰到,要求手寫陣列去重方法的**。如果是被提問到,陣列去重的方法有哪些?你能答出其中的10種,面試官很有可能對你刮目相看。

在實際專案中碰到的陣列去重,一般都是後台去處理,很少讓前端處理陣列去重。雖然運用到的概率較低,但還是需要了解一下,以防面試的時候被問到。

陣列去重的方法:

一、利用es6 set去重(es6中最常用)

​​如果不考慮相容性,這種去重的方法**最少。這種方法還無法去掉「{}」空物件,後面的高階方法會新增去掉重複「{}」的方法。

二、利用for巢狀for,然後splice去重(es5中最常用)

​​雙層迴圈,外層迴圈元素,內層迴圈時比較值。值相同時,則刪去這個值。

三、利用indexof去重

​​新建乙個空的結果陣列,for 迴圈原陣列,判斷結果陣列是否存在當前元素,如果有相同的值則跳過,不相同則push進陣列。

四、利用sort()

​​利用sort()排序方法,然後根據排序後的結果進行遍歷及相鄰元素比對。

五、利用物件的屬性不能相同的特點進行去重

​​六、利用includes

​​七、利用hasownproperty

​​利用hasownproperty 判斷是否存在物件屬性

八、利用filter

​​九、利用遞迴去重

​​十、利用map資料結構去重

​​建立乙個空map資料結構,遍歷需要去重的陣列,把陣列的每乙個元素作為key存到map中。由於map中不會出現相同的key值,所以最終得到的就是去重後的結果。

十一、利用reduce+includes

js多層物件陣列 合併 JS物件陣列合併去重?

陣列去重,一般會在面試的時候才會碰到,要求手寫陣列去重方法的 如果是被提問到,陣列去重的方法有哪些?你能答出其中的10種,面試官很有可能對你刮目相看。在實際專案中碰到的陣列去重,一般都是後台去處理,很少讓前端處理陣列去重。雖然運用到的概率較低,但還是需要了解一下,以防面試的時候被問到。陣列去重的方法...

js多層物件陣列 合併 關於js物件陣列的合併問題

怎麼樣才能把 var dd linenid 2222 attributesonname 布料 linenid 11111 attributesonname 布料 linenid 333 attributesonname 古田路 linenid linenson002111 attributesonn...

js 實現 多層級物件合併

需求是使用js對資料的格式進行轉換 把乙個二維陣列 包含層級資訊,層級數是不固定的 list 轉換為多層級的物件 我的思路就是 迴圈先把list裡單條資訊轉換為 多層級物件 然後和上一條 進行合併 原資料型別 分別轉換為 a a b 最終合併效果 a2 b onsubmit void 存放的原始資料...