當然,我的做法是,通過第一陣列循環一旦檢查索引第二個數組中的每個值。如果索引是> -1
,那麼push
它將返回到返回的數組上。
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
,你既可以陣列第一排序重新索引所有的價值:
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 array1 = ["cat", "sum","fun", "run", "hut"];
var array2 = ["bat", "cat","dog","sun", "hut", "gut"];
console.log(array1.diff(array2));
如果你有一個問題/問題擴展陣列原型,你可以很容易地將其改變爲一個函數。
var diff = function(arr, arr2) {
而且其中FUNC原本說this
到arr2
你會隨時隨地改變。
類似於http:// stackoverflow.com/questions/1885557/simplest-code-for-array-intersection-in-javascript –