自然,我的方法是循环遍历第一个数组一次并检查第二个数组中每个值的索引。如果索引为
> -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));
如果您在扩展Array原型时遇到问题/问题,则可以轻松地将其更改为函数。
var diff = function(arr, arr2) {
并且其中FUNC原本说你随时随地更改
this到
arr2。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)