使用Javascript从两个对象数组中删除重复项

狂轰滥炸

我有两个数组变量

let itSchool = [
  {
    'school': 'HS-1',
    'teachers': [
      {
        'name': 'John'
      },
      {
        'name': 'Eddy'
      }
    ]
  },
  {
    'school': 'HS-2',
    'teachers': [
      {
        'name': 'Edward'
      },
      {
        'name': 'John'
      }
    ]
  }
]

let itAbsence = [
  {
    'school': 'HS-1',
    'teacher': 'John'
  },
  {
    'school': 'HS-2',
    'teacher': 'Edward'
  }
]

如何删除同名的itSchoolby 比较itAbsence结果变成:

itSchool = [
  {
    'school': 'HS-1',
    'teachers': [
      {
        'name': 'Eddy'
      }
    ]
  },
  {
    'school': 'HS-2',
    'teachers': [
      {
        'name': 'John'
      }
    ]
  }
]
吉博尔
itAbsent.forEach( absent => {
  let index = itSchool.findIndex( schoolVar => absent.school === schoolVar.school );
  if( index === -1 ) return;
  let teacherIndex = itSchool[index].teachers.findIndex( teacher => teacher.name === absent.teacher );
  if(teacherIndex != -1) itSchool[index].teachers.splice(teacherIndex, 1);
}

所以,这是一个基本逻辑:

  1. 迭代 itAbsent

  2. 对于其中的每个对象,在 中找到匹配学校的索引itSchool

  3. 在该teachers学校数组中找到缺席教师的索引

  4. 删除必要的老师array.splice()

请注意以下几点:

  1. 这仅在每所学校有一名缺席教师时才有效。如果有更多 - 它们必须位于itAbsent数组中的不同对象上

  2. 如果在 中找不到学校或缺席的老师itSchool,则函数将不执行任何操作(只是跳过它)。

  3. splice方法实际上改变了我们正在处理的相同数组,例如itSchool[index].teachers在这种情况下。如果您不想更改它,则必须创建它的副本并将该副本传递给此代码以进行更改。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

比较两个Javascript数组并删除重复项

如何比较对象的两个数组并删除JavaScript中的重复项

根据两个条件从JavaScript中的对象数组中删除对象(重复的mac地址&使用的条件小于或大于)

比较两个具有对象的数组,并从第一个数组中删除重复项

合并两个排序的数组时,使用Java中的集合删除重复项

如何删除对象数组中的两个重复值

删除对象数组javascript / react-native中两个重复的字段之一

Javascript:使用单个属性删除对象数组中的重复项

javascript从对象数组中删除重复项

删除对象数组Javascript中的重复项

Javascript从对象数组中删除重复项

使用对象从数组中删除重复项

合并两个numpy数组并删除重复项?

从PHP中的两个数组中删除重复项

如何基于两个自定义对象删除列表中的重复项

当两个值相同时从数组中删除重复项

使用javascript删除与对象的另一个键和值对对应的对象数组中的重复项

希望使用过滤器方法根据使用 Swift 的数组中的两个属性删除重复的模型对象

如何在JavaScript中合并两个数组并删除重复项

删除两个ggplot图例中的重复项

删除多个列表python中的两个重复项

删除两个向量中的重复项

合并两个列表并删除重复项,而不删除原始列表中的重复项

比较 2 个对象数组并删除重复项 javascript

使用python从文本文件中删除两个重复项(原始和重复项)

如何删除数组中两个重复对象的实例

从 JavaScript 中的对象数组中删除第一个重复项

在不使用熊猫的情况下合并和删除两个 csv 中的重复项

Javascript es6-如何删除对象数组中的重复项(最后一个重复项除外)?