Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果值存在于其他数组中,JavaScript将从数组中删除对象_Javascript_Arrays_Firebase - Fatal编程技术网

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

如果值存在于其他数组中,JavaScript将从数组中删除对象,javascript,arrays,firebase,Javascript,Arrays,Firebase,我使用的是Firebase,因此如果有一种更有效的方法来构造此数据,以便能够仅查询登录用户尚未查看的卡,我也愿意使用该方法。现在我正在尝试在事后进行过滤 我的应用程序中包含的所有卡的数组如下所示: 我有第二个数组,它保存用户已经看到的所有卡的信息。我希望能够查看这两个数组,如果数组2中的cid与数组1中的$id匹配,则将该对象完全从数组1中删除 为什么不使用一个对象数组来实现这一点呢。为此保留一个对象键 看见 默认情况下,保持可见为false。并在看到的列为false时使用 或者,您可以在获取

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

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

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


为什么不使用一个对象数组来实现这一点呢。为此保留一个对象键

看见

默认情况下,保持可见为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
您可以按照我的答案来做。答案与您接受的答案相同。