我們要將乙個陣列裡面的元素去重,核心演算法是:
新建乙個空陣列,將舊陣列裡面元素一一去查詢新陣列,如果該元素在新陣列裡沒有出現過,那我們就將其新增到新陣列裡,否則就不新增。
那麼我們怎麼判斷新陣列裡面有沒有存在該元素呢?
我們可以通過陣列索引的方式來查詢。
借助 indexof() 這個方法來實現。
方法名說明
返回值indexof()
在陣列中查詢給定元素的第乙個索引號(可能存在多個相同的元素)
如果存在,返回索引號;不存在,則返回-1
lastindexof()
在陣列中查詢給定元素的最後乙個索引號(可能存在多個相同的元素)
如果存在,返回索引號;不存在,則返回-1
var arr =[1
,4,2
,1,5
];console.
log(
indexof(1
));//0
console.
log(
lastindexof(1
));//3
console.
log(
indexof(3
));//-1
console.
log(
lastindexof(3
));//-1
我們由陣列索引可知,陣列.indexof(元素);該元素不存在於該陣列中,將返回-1。
則可以寫出以下陣列去重** :
var arr =[1
,4,5
,7,1
,8,7
,6];
var arr2 =
;for
(i =
0;i < arr.length;i++)}
console.
log(arr2)
;//[1,4,5,7,8,6]
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...