如果值存在于其他数组中,JavaScript 会从数组中删除对象

use*_*560 0 javascript arrays firebase

我正在使用 Firebase,因此如果有一种更有效的方法来构造这些数据,以便能够仅查询登录用户尚未查看的卡片,我也愿意走这条路。现在我正在尝试事后进行过滤。

我的应用程序中包含所有卡片的数组,如下所示:

在此输入图像描述

我有第二个数组,用于保存用户已经看到的所有卡片的信息。我希望能够查看两个数组,如果数组 2 中的 cid 与数组 1 中的 $id 匹配,则从数组 1 中完全删除该对象。

在此输入图像描述

S M*_*han 9

这实际上很容易以函数方式完成:

array1 = array1.filter(item => array2.every(item2 => item2.cid != item.$id));

Array.prototype.filter()以数组形式返回导致所提供函数返回的数组元素true。我们的过滤评估器说“如果 array2 中没有 CID 与该项目 ID 匹配的项目,则返回 true”。

因为filter()返回的是一个新数组,所以不需要使用splice(); 我们可以将 array1 重新分配给新过滤的数组。