如何确定两个包含对象的数组之间的差异

易学

我有一个函数,可以对数据库进行axios调用,然后将结果推入到我先前声明的空数组中。我想看看staffId和Id之间是否有区别,可以继续在数据库中创建一个新用户。我遇到的问题是确定阵列中的差异。

let userBox = []
let newUserBox = []


  checkforNewUser (e) {
  axios.all([
  axios.get('/updateUserList'),
  axios.get('/userInformation')
  ])
  .then(axios.spread((newUsers, currentUsers) => {
  // do something with both responses
  userBox.push(newUsers.data)
  newUserBox.push(currentUsers.data)
  })).then(
    console.log(userBox),
    console.log(newUserBox),
  ).then(//a new call to create a user if the StaffId is not currently an ID in the userbox);


}

记录数据时,响应如下:

    0: Array(9)
0: {staffID: 1, dept: "Junior Web Developer", email: "[email protected]", name: "manasa", password: "$2y$10$/zYS7OhzwdLOi6Slzc3Rv.aJdy1J6MjnLCN24GmZ3rMHWUS"}
1: {staffID: 2, dept: "Web Developer", email: "[email protected]", name: "Julio Fajardo", password: "$2y$10$MphAC8aRY2uzs1ZEduvCqK1/1nd7t0KukEkvGbx5Y4van.Da6"}
2: {staffID: 3, dept: "Fake Title", email: "[email protected]", name: "John Fester", password: "$2y$10$/oa/ESQmhhc5WvxrQKoUU.PjdZY5FccilGfCUL5eyeOU5IDSa"}
3: {staffID: 5, dept: "Fake Title", email: "[email protected]", name: "Test", password: "$2y$10$VWnnw5gRTN2absWos04fsOixW6dbFqsFZL8oPiJm"}
4: {staffID: 6, dept: "Conf room", email: "[email protected]", name: "Conf 1st floor", password: "$2y$10$KAZa1k2Sd/rg6dnVeqw4duB/XbAdze6Zle3ZhcMaRphloG."}
5: {staffID: 8, dept: "Fake Title", email: "[email protected]", name: "New guy", password: ""}
6: {staffID: 9, dept: "Fake Title", email: "[email protected]", name: "New Guy2", password: ""}
7: {staffID: 20, dept: "Erwing", email: "[email protected]", name: "Erwing Hernandez", password: "$2y$10$RWgOBbUHojgmyk3behYhd.kzdFEiH.6d70pS5q5Gf3ZYEa"}
8: {staffID: 12, dept: "Conf room", email: "[email protected]", name: "Cristina Bermudez", password: "$2y$10$92I6fSJY6OW001cdaeF5tdHBjWHBmoCvX1RnfhTspjpBa"}


    0: {id: 1, firstName: "Elton", lastName: "Frederick", departmentId: 1, admin: true, …}
1: {id: 2, firstName: "Julio", lastName: "Probando", departmentId: 1, admin: false, …}
2: {id: 3, firstName: "Corey", lastName: "Chris", departmentId: 2, admin: false, …}
3: {id: 4, firstName: "Daisy", lastName: "Ramos", departmentId: 3, admin: false, …}
4: {id: 5, firstName: "Test", lastName: "User", departmentId: 0, admin: false, …}
5: {id: 6, firstName: "Tes2t", lastName: "Use2r", departmentId: 3, admin: false, …}
6: {id: 7, firstName: "Air Car Hotel", lastName: "Nunca", departmentId: 4, admin: false, …}
7: {id: 8, firstName: "Jenn", lastName: "Lee", departmentId: 4, admin: false, …}
8: {id: 9, firstName: "Reyna", lastName: "Pagan", departmentId: 5, admin: false, …}
9: {id: 10, firstName: "Ameilia", lastName: "Rodriguez", departmentId: 6, admin: false, …}

如果没有与该ID匹配的员工ID,则意味着该用户不在数据库中,需要在其他端点上创建。当我尝试映射任何一个的IDS并进行比较时,我遇到了问题。解决此问题的最佳方法是什么?

热尔加纳

您可以将所有ID添加到一个对象中,并循环新用户以查找不同的ID。这样,您就不会使用嵌套循环,如果您正在使用大型数据库,那么嵌套循环是一个加号。

const userBox = [ {staffID: 1, dept: "Junior Web Developer", email: "[email protected]", name: "manasa", password: "$2y$10$/zYS7OhzwdLOi6Slzc3Rv.aJdy1J6MjnLCN24GmZ3rMHWUS"},
    {staffID: 2, dept: "Web Developer", email: "[email protected]", name: "Julio Fajardo", password: "$2y$10$MphAC8aRY2uzs1ZEduvCqK1/1nd7t0KukEkvGbx5Y4van.Da6"},
    {staffID: 3, dept: "Fake Title", email: "[email protected]", name: "John Fester", password: "$2y$10$/oa/ESQmhhc5WvxrQKoUU.PjdZY5FccilGfCUL5eyeOU5IDSa"},
    {staffID: 5, dept: "Fake Title", email: "[email protected]", name: "Test", password: "$2y$10$VWnnw5gRTN2absWos04fsOixW6dbFqsFZL8oPiJm"},
    {staffID: 6, dept: "Conf room", email: "[email protected]", name: "Conf 1st floor", password: "$2y$10$KAZa1k2Sd/rg6dnVeqw4duB/XbAdze6Zle3ZhcMaRphloG."},
    {staffID: 8, dept: "Fake Title", email: "[email protected]", name: "New guy", password: ""},
    {staffID: 9, dept: "Fake Title", email: "[email protected]", name: "New Guy2", password: ""},
    {staffID: 20, dept: "Erwing", email: "[email protected]", name: "Erwing Hernandez", password: "$2y$10$RWgOBbUHojgmyk3behYhd.kzdFEiH.6d70pS5q5Gf3ZYEa"},
    {staffID: 12, dept: "Conf room", email: "[email protected]", name: "Cristina Bermudez", password: "$2y$10$92I6fSJY6OW001cdaeF5tdHBjWHBmoCvX1RnfhTspjpBa"} ]


const newUserBox = [ {id: 1, firstName: "Elton", lastName: "Frederick", departmentId: 1, admin: true},
    {id: 2, firstName: "Julio", lastName: "Probando", departmentId: 1, admin: false},
    {id: 3, firstName: "Corey", lastName: "Chris", departmentId: 2, admin: false},
    {id: 4, firstName: "Daisy", lastName: "Ramos", departmentId: 3, admin: false},
    {id: 5, firstName: "Test", lastName: "User", departmentId: 0, admin: false},
    {id: 6, firstName: "Tes2t", lastName: "Use2r", departmentId: 3, admin: false},
    {id: 7, firstName: "Air Car Hotel", lastName: "Nunca", departmentId: 4, admin: false},
    {id: 8, firstName: "Jenn", lastName: "Lee", departmentId: 4, admin: false},
    {id: 9, firstName: "Reyna", lastName: "Pagan", departmentId: 5, admin: false},
    {id: 10, firstName: "Ameilia", lastName: "Rodriguez", departmentId: 6, admin: false}]

let userIds = {};
let newUsers = [];
     
// Save all user Ids in object
for (let user of userBox) {
  userIds[user.staffID] = user.staffID;
}
    
// Compare new users with previous user ids and push new users in an array
for (let newUser of newUserBox) {
  if (!userIds[newUser.id]) {
    newUsers.push(newUser);
  }
}
console.log(newUsers);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何找到对象的两个JavaScript数组之间的差异?

查找包含对象的两个数组之间的差异

如何获得具有不同属性比较器的两个对象数组之间的差异?

如何在JavaScript中获得两个对象数组之间的差异

如何获得两个数组对象之间的差异项?

如何产生一个数组,该数组是两个json对象数组之间的差异

如何找到两个整数数组之间的差异?

两个对象之间的差异 - 减少

如何比较两个对象数组以找到差异

如何返回包含两个变量之间值的新数组或对象

如何确定两个值之间的差异是否落在awk的范围内?

如何使用Java以编程方式确定两个XML文件之间的差异作为XPATH?

如何对两个对象数组使用“包含”

在两个对象的JavaScript数组中查找值之间的差异

为什么我检查两个对象数组之间的差异的条件是错误的?

如何根据两个数组之间的差异来制作一个数组?

查找两个Python对象之间的差异

mongodb计算对象字段的两个属性之间的差异

两个对象之间的一般深度差异

两个DateTime对象之间的差异,以分钟为单位

JavaScript-返回两个对象之间的差异?

显示两个JS对象之间的差异

在 C# 中查找两个对象之间的差异

两个排序数组之间的差异

在numpy数组中找到两个值之间的差异

如何使用GSON获得两个json对象之间的差异?

如何在Python中获得两个时间对象之间的差异

如何在Dart中找到两个时间戳对象之间的差异?

使用nodatime如何找到两个ZonedDateTime对象之间的差异