使用php的array_unique()
函式允許你傳遞乙個陣列,然後移除重複的值,返回乙個擁有唯一值的陣列。這個函式大多數情況下都能工作得很好。但是,如果你嘗試在乙個大的陣列裡使用array_unique()
函式,它會執行地慢一些。
有乙個比較好而且更快的函式array_flip()
來替代使用array_unique()
函式來建立唯一的陣列。這個魔法般的函式會交換陣列裡面每乙個元素的鍵和值,因為鍵值必須唯一,因此,你會得到跟array_unique()
函式一樣的結果。
因為我們已經移除了一些元素,因此陣列看起來不是正常的序列。比如我們可能會得到:/* 建立乙個包含重複值的,一共四個元素的陣列 */
$array
=array
('green'
,'blue'
,'orange'
,'blue'
);
/* 翻轉陣列,你將會得到唯一鍵值的陣列
array(
'green'
=>0,
'blue'
=>1,
'orange'
=>
2); */
$array
=array_flip
($array
);
/* 然後再翻轉一次,將鍵和值重新放置,然後得到陣列:array(
0=>
'green',1
=>
'blue',2
=>
'orange'
); */
$array
=array_flip
($array
);
array(0=>'a',2=>'b',5=>'c');
。在某些情況下,這不是乙個問題,但是如果你需要陣列的鍵值保持數字的序列,你可以使用一到兩種方法解決鍵值亂序的問題。
新增array_flip之後的函式,將會對陣列的鍵值排序並且讓它們恢復到正常的序列,如:0,1,2,3...
$array
=array
('green'
,'blue'
,'orange'
,'blue'
);$array
=array_flip
($array
);$array
=array_flip
($array
);/* 使用array_merge()函式修復鍵值*/
$array
=array_merge
($array
);
注意,這種修復陣列鍵值的方法比使用array_merge()
函式稍微快了一點。你也可以在最後一步結合使用array_keys()
函式(此函式返回翻轉後的值)。然後當你翻轉陣列的值,鍵值就會根據順序建立。
$array
=array
('green'
,'blue'
,'orange'
,'blue'
);$array
=array_flip
($array
);/* 跟第乙個例子一樣,但是現在我們先提取陣列的鍵值 */
$array
=array_keys
($array
);
非常簡單,比起在大陣列使用array_unique函式,有了乙個有效的效能提公升。 陣列的去重
陣列去重 1 var arr 4,2,5,7,2,6,2,6,6,5 console.log arr 使用迴圈依次比較,遇到重複的就刪除 比較length 1趟 for var i 0 i arr.length 1 i console.log arr 2 var arr 4,2,4,5,7,2,6,...
JS陣列去重,物件去重
例項1根據indexof去重,indexof的好處就是返回的是首次出現的位置,這樣後面即使出現的值一樣,也只能返回第一次出現的索引,當然這個只適用於簡單的陣列 物件陣列去重 const objarr const obj const newobjarr for let i 0 i objarr.len...
js陣列去重以及陣列內物件去重
大家在寫專案的時候一定遇到過這種邏輯需求,就是給乙個陣列進行去重處理,還有一種就是給陣列內的物件根據某乙個屬性,比如id,進行去重,下面我寫了兩個函式,都是可以達到這個效果的,乙個是純es5的去重辦法,乙個是用了es6的array.from new set 和es5的reduce來進行去重 我先定義...