javascript - Firebase 和 javascript - 将项目从一个列表排除到另一个列表

标签 javascript arrays firebase firebase-realtime-database

我脑子里一片空白。我有的是 2 个数组:

  1. 应用的所有用户的列表
  2. 此表单的所有用户的列表

我想要做的是返回数组 1 和 2 之间的差异。

这是我的应用程序所有用户的列表:

[{0: 
{id: 1234, email: test@test.com}
},{1:
{id: 1235, email: michael@test.com}
}]

那么数组 2 将如下所示:

[{0: 
{id: 1234, email: test@test.com}
}]

所以我想要一个能够返回的数组(数组 1 和 2 之间的差异):

[{0:
{id: 1235, email: michael@test.com}
}]

这是我生成数组 1 的方法:

this.allUsersList = [];

this.sharingProvider.getUsersListRef().on('child_added', userSn => {

  if(userSn.key) {
    this.allUsersList.push({
      id: userSn.key,
      email: userSn.val().email
    });
  }

});

这是我生成数组 2 的方法:

this.sharingList = [];
this.sharingProvider.getFormsUsersRef(this.formId).on('child_added', fuSnap => {
  this.sharingProvider.getUsersListRef().child(fuSnap.key).on('value', userSn => {

    const myUserId = this.sharingProvider.getMyUserId();
    if(userSn.key !== myUserId) {
      this.sharingList.push({
        id: userSn.key,
        email: userSn.val().email
      });
    }
  });
});

感谢任何帮助

最佳答案

您可以使用some and Foreach ...

let array1 = [
{0: 
{id: 1234, email: 'test@test.com'}
},
{1:
{id: 1235, email: 'michael@test.com'}
}
]

let array2 = [
{0: 
{id: 1234, email: 'test@test.com'}
}
],array3 = [];


array1.forEach(function(e){
  let conditional = array2.some(function(element,i){ 
  return e[i] && element[i].id === e[i].id && element[i].email === e[i].email
  });
  
  if(!conditional) array3.push(e);
});

console.log(array3);

关于javascript - Firebase 和 javascript - 将项目从一个列表排除到另一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46910768/

相关文章:

firebase - 如何使用测试模式而不是锁定模式重新创建 Firebase Firestore 数据库

javascript - parseInt 替代字符串中的字符

c++ - 将指向数组数组的指针传递给函数

c++ - 给定一个排序数组和一个参数 k,求在线性时间内大于或等于 k ​​的两个数之和的计数

java - 如何比较 arraylist java 中所有可能的组合

android - Firebase 身份验证 android.view.View$OnClickListener 错误消息

java - 如何检索 Firebase 集合中的最后一个文档。我还想获取文档字段值

javascript - Chrome 给出了错误的元素宽度

javascript - 使用过渡时 Bootstrap 列为空

javascript - 将 48khz 下采样到 16khz - Javascript