js陣列去重

2022-07-13 14:45:26 字數 1378 閱讀 4016

在工作上,對json資料處理時,例如遇到對某些產品的尺碼進行排序,不同的產品都有相同的尺碼那是正常不過的事情,如果我們要把這些轉成**的形式來展現,那麼這些尺碼就不要不能重複才行.在這裡呢,我就寫幾個陣列去重的方法,給大家參考參考:

方法一:對陣列進行先排序,排完序之後在讓元素與前乙個元素做對比,相同的就去掉

說明:該方法用到的是sort()方法和slice(),下面我直接貼**上來,裡面有注釋說明,相信大家肯定是看得懂的

var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j'];

//對陣列先進行排序

arr.sort();

for(var i = 0; i < arr.length; i++)

}console.log(arr);

方法二:遍歷陣列,定義乙個新陣列,利用indexof判斷是否存在於新陣列中,不存在則push到新陣列,最後返回新陣列

var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j'];

function

delarr(array)

}return

newarr;

}console.log(delarr(arr));

方法三:利用物件鍵值對法:新建一js物件以及新陣列,遍歷傳入陣列時,判斷值是否為js物件的鍵,不是的話給物件新增該鍵並放入新陣列。

注意點: 判斷是否為js物件鍵時,會自動對傳入的鍵執行「tostring()」,不同的鍵可能會被誤認為一樣;例如: a[1]、a["1"] 。解決上述問題還是得呼叫「indexof」。

var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j'];

function

delarr2(array),newarr=,val,type;

for(var i=0;i)

else

if(json[val].indexof(type)<0)

}return

newarr;

}console.log(delarr2(arr));

方法四:es6中set()方法:set的值是具有唯一性的

var arr=[1,2,3,4,5,3,2,1,4]

var newarr=[...new set(arr)] //

[1, 2, 3, 4, 5]

JS陣列去重,物件去重

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

js 陣列去重

function unique arr if isrepeated return result 建立乙個新的陣列,迴圈原有的陣列,每取乙個數就迴圈判斷新建的陣列中是否有和這個相等的值,沒有則插入。方法簡單,但是有雙重迴圈,陣列大了之後效率低。所以能一次迴圈解決最好。var str new array...

JS 陣列去重

我總共想出了三種演算法來實現這個目的 array.prototype.unique1 function return n array.prototype.unique2 function r n為hash表,r為臨時陣列 for var i 0 i this.length i 遍歷當前陣列 retu...