簡單的陣列去重是比較簡單的,方法也特別多,如給下面的陣列去重:
let arr = [1,2,2,4,9,6,7,5,2,3,5,6,5]
最常用的可以用for迴圈套for迴圈,再用splice刪除重複的陣列:
let arrunique = function(arr)}}
return
arr;
}
然而陣列的子集為物件時,一般不使用多個for迴圈來去重,如下面的陣列物件:
let arr = [,,,]
通過觀察,我們可以發現該陣列中的第1、3、4項其實是一樣的,最初在谷歌找了幾個方法最終都不太滿意,比如會改變陣列中物件原來的排序、陣列去重失敗等,後來經過多次嘗試和實踐,得出以下最簡單的方法:
利用物件的鍵名無法重複的特點,我們可以新建乙個臨時物件來儲存原陣列中的物件子集的值,比如我的專案中mch_id是唯一的id,然後設定的它為臨時物件的鍵名,值為true即可,保證它的唯一性
通過判斷物件的鍵名是唯一時,把對應的陣列值新增到乙個空陣列中,最終得到乙個去重後的陣列物件
此方法不會改變陣列物件原有的排序
let arrunique = function(arr);
let finalresult=;
for(let i=0;i)
return
finalresult;
}
或者利用es5陣列方法reduce
let arrunique = function(arr);
arr = arr.reduce(function
(prevarr, currentitem) , )
return
arr;
}
提前祝大家勞動節快樂
JS陣列去重,物件去重
例項1根據indexof去重,indexof的好處就是返回的是首次出現的位置,這樣後面即使出現的值一樣,也只能返回第一次出現的索引,當然這個只適用於簡單的陣列 物件陣列去重 const objarr const obj const newobjarr for let i 0 i objarr.len...
JS陣列去重方法 支援物件陣列
陣列去重方法 1 支援基本資料型別組成的陣列 比如 let arr 1,5,6,6,1,true,true 6 1,1,5 呼叫 rd arr 返回 1,5,6,true,true 6 2 支援物件型別組成的陣列,但是要宣告是根據哪幾個物件屬性去進行判重的 比如 let arr 呼叫rd arr,n...
js 陣列物件去重
var arr 方法1 利用物件訪問屬性的方法,判斷物件中是否存在key var result var obj for var i 0 i const result const obj for let i 0 i data.length i console.log result result con...