📌  相关文章
📜  如何使用 JavaScript 获取一个数组中不存在于另一个数组中的元素?(1)

📅  最后修改于: 2023-12-03 14:51:55.862000             🧑  作者: Mango

如何使用 JavaScript 获取一个数组中不存在于另一个数组中的元素?

有时候需要比较两个数组中的元素,以查找它们之间的不同之处。 在 JavaScript 中,可以使用一些内置函数来实现此目的。

使用 Array.filter() 函数

使用 Array.filter() 函数可以快速地获取一个数组中不存在于另一个数组中的元素。

例如,我们有两个数组 arr1 和 arr2。我们可以使用以下代码来获取 arr1 中不存在于 arr2 中的元素:

const arr1 = [1, 2, 3, 4, 5];
const arr2 = [2, 4, 6];
const diff = arr1.filter(x => !arr2.includes(x));
console.log(diff); // [1, 3, 5]

上面的代码使用了 Array.filter() 函数和 Array.includes() 函数。filter() 函数会遍历所有的元素,并将满足条件的元素保存到一个新数组中。

在这个例子中,我们使用箭头函数来筛选出 arr1 中不存在于 arr2 的元素。如果元素 x 不存在于 arr2 中,则 !arr2.includes(x) 表达式的值为真,filter() 函数就会保留该元素。

最后,我们得到了 arr1 中不存在于 arr2 中的元素。

使用 Array.reduce() 函数

另一种方法是使用 Array.reduce() 函数。reduce() 函数可以将数组中的所有元素累积到一个值中。

例如,我们可以使用以下代码来获取 arr1 中不存在于 arr2 中的元素:

const arr1 = [1, 2, 3, 4, 5];
const arr2 = [2, 4, 6];
const diff = arr1.reduce((res, x) => {
    if (!arr2.includes(x)) {
        res.push(x);
    }
    return res;
}, []);
console.log(diff); // [1, 3, 5]

上面的代码使用了 Array.reduce() 函数和 Array.includes() 函数。reduce() 函数会将所有元素累积到一个值中。

在这个例子中,我们使用一个空数组作为 reduce() 函数的初始值,然后遍历 arr1 中的所有元素。

如果元素 x 不存在于 arr2 中,则将其添加到结果数组 res 中。

最后,我们得到了 arr1 中不存在于 arr2 中的元素。

总结

以上是两种使用 JavaScript 获取一个数组中不存在于另一个数组中的元素的方法。使用 filter() 函数可以快速得到结果,而使用 reduce() 函数可以更加灵活,可以执行更多自定义操作。

无论哪种方法,都可以帮助程序员快速实现数组之间的比较,从而找到它们之间的不同之处。