js数组比较去重

有时候我们可能需要比较两个数组,在数组a中删除另一个数组b中已经存在的值。通常情况下我们的做法是循环两个数组比较判断并删除,下面记录两个我觉得比较巧妙的方法

方法1:

var a = ["i", "b", "c", "d", "e", "f", "x"],
b = ["a", "b", "c", "d", "e", "f", "g"],
res = [];
for(var i=0,len=a.length;i<len;i++){
if(b.indexOf(a[i])<0){
res.push(a[i]);
}
}

巧妙的利用了数组的indexOf方法来确定一个值在另外一个数组中是否存在,代码量少了不少。

方法2:

var a = ["i", "b", "c", "d", "e", "f", "x"],
b = ["a", "b", "c", "d", "e", "f", "g"],
temp = {},
res = []; 
for (var i=0,len=b.length;i<len;i++) {
temp[b[i]] = true;
};
for (var i=0,len=a.length;i<len;i++) {
if (!temp[a[i]]) {
res.push(a[i]);
};
};

这个方法需要的代码可能多一些,但是通过引入中间数组,使代码逻辑清晰了不少。

  • 支付宝二维码 支付宝
  • 微信二维码 微信
相关文章