从数组lodash中删除项目

时间:2018-01-31 10:49:55

标签: javascript arrays lodash

我有两个数组,我想从数组1中删除数组2中存在的条目

当然我可以循环并创建新的数组,但我的问题是,如果lodash有一些可以帮助的工具......

var array1 = [“user1”,”user2", “user3", “user4”];


var array2 = [“user1”, “user3"];

我希望删除

之后 array1
var array1 =[”user2", “user4”];

我看到lodash有这个但是有更好的方法吗?

var evens = _.remove(array, function(n) {
  return n % 2 == 0;
});

2 个答案:

答案 0 :(得分:3)

使用lodash,您可以使用_.difference(array, [values])其中array是要检查的数组,[values]是要排除的值。

查看https://lodash.com/docs/4.17.4#difference

上的文档
var array1 = ['user1', 'user2', 'user3', 'user4'];
var array2 = ['user2', 'user4'];

array1 = _.difference(array1, array2); //['user1','user3'];

答案 1 :(得分:1)

如果您正在寻找一个vanilla JS解决方案,您可以连接两个数组并过滤掉重复的项目:



var array1 = ['user1', 'user2', 'user3', 'user4'];
var array2 = ['user1', 'user3'];

array1 = [...array1, ...array2].filter((e, i, self) => self.indexOf(e) === self.lastIndexOf(e));

console.log(array1);




如果您无法使用ES6 spread operator (...),请使用array.prototype.concat



var array1 = ['user1', 'user2', 'user3', 'user4'];
var array2 = ['user1', 'user3'];

array1 = array1.concat(array2).filter((e, i, self) => self.indexOf(e) === self.lastIndexOf(e));

console.log(array1);