は当然のことながら、私のアプローチは、一度最初の配列をループしたインデックスをチェック2番目の配列の各値のインデックスが> -1
の場合は、返された配列にpush
を置きます。それは少し速く実行できますので、他の人がやるように私のソリューションは、2つのループを使用していない
Array.prototype.diff = function(arr2) {
var ret = [];
for(var i in this) {
if(arr2.indexOf(this[i]) > -1){
ret.push(this[i]);
}
}
return ret;
};
。あなたがfor..in
を使用しないようにしたい場合は、すべてのそれらの値のインデックスを再作成するために最初の両方の配列をソートすることができます:あなたはアレイを拡張するとの問題/問題がある場合
var array1 = ["cat", "sum","fun", "run", "hut"];
var array2 = ["bat", "cat","dog","sun", "hut", "gut"];
console.log(array1.diff(array2));
:
Array.prototype.diff = function(arr2) {
var ret = [];
this.sort();
arr2.sort();
for(var i = 0; i < this.length; i += 1) {
if(arr2.indexOf(this[i]) > -1){
ret.push(this[i]);
}
}
return ret;
};
使い方は次のようになります。このプロトタイプを関数に簡単に変更することができます。
var diff = function(arr, arr2) {
そしてfuncはもともとarr2
にthis
を言ったところ、あなたはどこにでも変更したいです。
:// stackoverflow.com/questions/1885557/simplest-code-for-array-intersection-in-javascript –