当然,我的方法是遍历第一个数组一次,并检查第二个数组中每个值的索引。如果索引是 ,则将其放到返回的数组上。> -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