如果值存在于其他数组中,JavaScript将从数组中删除对象
我使用的是Firebase,因此如果有一种更有效的方法来构造此数据,以便能够仅查询登录用户尚未查看的卡,我也愿意使用该方法。现在我正在尝试在事后进行过滤 我的应用程序中包含的所有卡的数组如下所示: 我有第二个数组,它保存用户已经看到的所有卡的信息。我希望能够查看这两个数组,如果数组2中的cid与数组1中的$id匹配,则将该对象完全从数组1中删除如果值存在于其他数组中,JavaScript将从数组中删除对象,javascript,arrays,firebase,Javascript,Arrays,Firebase,我使用的是Firebase,因此如果有一种更有效的方法来构造此数据,以便能够仅查询登录用户尚未查看的卡,我也愿意使用该方法。现在我正在尝试在事后进行过滤 我的应用程序中包含的所有卡的数组如下所示: 我有第二个数组,它保存用户已经看到的所有卡的信息。我希望能够查看这两个数组,如果数组2中的cid与数组1中的$id匹配,则将该对象完全从数组1中删除 为什么不使用一个对象数组来实现这一点呢。为此保留一个对象键 看见 默认情况下,保持可见为false。并在看到的列为false时使用 或者,您可以在获取
为什么不使用一个对象数组来实现这一点呢。为此保留一个对象键 看见 默认情况下,保持可见为false。并在看到的列为false时使用 或者,您可以在获取代码中的数据后执行类似操作
var resultarray = [];
for(var i =0; i< array1.length; i++ ) {
var flag = true;
for(var j= 0; j< array2.length;j++) {
if (array1[1].$id === array2[2].$id) {
flag = false;
break;
}
}
if(flag === true) {
resultarray.push(array1[i]);
}
}
var resultarray=[];
对于(变量i=0;i
这实际上很容易从功能上做到:
array1=array1.filter(item=>array2.every(item2=>item2.cid!=item.id))代码>
以数组的形式返回导致提供的函数返回true
的数组元素。我们的筛选计算器说“如果array2中没有CID与此项ID匹配的项,则返回true”
因为filter()
正在返回一个新数组,所以不需要使用splice()
;我们只需将阵列1重新分配给新筛选的阵列。在阵列中循环,并使用拼接删除元素
for(var i =0; i< array2.length; i++ ) {
for(var j= 0; j< array1.length;j++) {
if (array2[i].$id === array1[j].$id) {
array1.splice(j,1);
break;
}
}
for(变量i=0;i
您可以按照我的答案来做。答案与您接受的答案相同。