JSは配列デ重量を実現します.(重複要素は一つだけ残します.)
1801 ワード
JavaScriptは配列中の重複要素を除去することを実現します.
ネット上のたくさんのおかみさんの書き方を見て、蠢きたくて、自分で照らしていくつか書いて、一番いいのを選んで出して、皆さんと分かち合います.
データを用意する
長さ10 Wと5 Wの2つの配列をそれぞれ作成しました.
2つの配列をunique()法で結合し、重複した項目を削除します.
まず使ったのは劉春龍大王が書いたのです.
参考文献 jtils-JavaScript常用関数ライブラリ JavaScript高性能配列除去-Wise.Wrong JSの中で組は重い問題に行きます.劉春龍のブログ .
ネット上のたくさんのおかみさんの書き方を見て、蠢きたくて、自分で照らしていくつか書いて、一番いいのを選んで出して、皆さんと分かち合います.
データを用意する
長さ10 Wと5 Wの2つの配列をそれぞれ作成しました.
2つの配列をunique()法で結合し、重複した項目を削除します.
let arr1 = Array.from(new Array(100000), (x, index)=>{
return index
})
let arr2 = Array.from(new Array(50000), (x, index)=>{
return index+index
})
let start = new Date().getTime()
console.log(' ')
function unique(a, b) {
//
}
console.log(' ', unique(arr1,arr2).length);
let end = new Date().getTime()
console.log(' ', end - start);
デバッグ関数を入れて実行します.まず使ったのは劉春龍大王が書いたのです.
arr3 = arr1.concat(arr2);
Array.prototype.unique4 = function(){
this.sort();
var re=[this[0]];
for(var i = 1; i < this.length; i++)
{
if( this[i] !== re[re.length-1])
{
re.push(this[i]);
}
}
return re;
}
//
console.log(' ', arr3.unique4().length);
let end = new Date().getTime()
console.log(' ', end - start);
出力結果
100000
169
そしてWise.Wrong大男のfor…of+Objectです.function distinct(a, b) {
let arr = a.concat(b)
let result = []
let obj = {}
for (let i of arr) {
if (!obj[i]) {
result.push(i)
obj[i] = 1
}
}
return result
}
出力結果
100000
22
最後に、Wise.Wrong大男の張った書き方を参照して、次のように書きました.
100000
19
ここではAray.prototype.uniqueをJavaScript常用関数ライブラリ-jtilsに集めました.jutils.arrayUniq();
重複したデータを持つ配列を入れてそのまま使用できます.参考文献