在 javascript 中获取一个数组中的内容而不是另一个数组中的内容

Get what's in one array and not the other, in javascript

我有两个数组,sample1sample2。我怎样才能得到 sample1 中的内容,而不是 sample2?

var sample1 = [1, 2, 3, 4];
var sample2 = [1, 2];

var sample3 = [3, 4]; //what I want to get

这个的应用:两个数组,每个数组包含一些 discord.js 公会成员。

我试过的:

console.log(sample1.find(el => !sample2.includes(el)).toString());
// Cannot read property 'toString' of undefined

我知道这样做的一种方法是查看 sample1 数组,然后如果 sample2 中没有某些内容,则将其推送到新数组。但是,我知道有更短、更有效的方法可以做到这一点,尤其是当 sample1 和 sample2 很长的时候。

为澄清起见,sample1 和 sample2 并非未定义。

.find()会return第一个符合条件的元素。 您正在寻找的是取回一个新阵列。为此,您可以使用 .filter() 其中 returns 过滤数组,如下所示: console.log(sample1.filter(el => !sample2.includes(el))); // outputs [3, 4]