当然,我的做法是,通过第一阵列循环一旦检查索引第二个数组中的每个值。如果索引是> -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 –