javascript - 区分数组中修改的对象或聚合

标签 javascript arrays

这次我遇到了以下问题,我从数据库中获取一个对象数组,该数组每隔几分钟更新一次,问题是与之前的数组相比,该数组可能包含新对象或删除的对象。 . 示例;

第一次数据输入

[
  {name: 'Paul', color: 'blue', age: '7'},
  {name: 'Lisa', color: 'rose', age: '4'}
]

第二个数据输入(添加一个对象)

[
  {name: 'Paul', color: 'blue', age: '7'},
  {name: 'Lisa', color: 'rose', age: '4'},
  {name: 'Adam', color: 'green', age: '11'}
]

第三个数据条目(对象被删除)

[
  {name: 'Paul', color: 'blue', age: '7'},
  {name: 'Adam', color: 'green', age: '11'}
]

我需要检测并验证与第一个条目相比添加或删除了哪个元素,尝试执行 forEach 通过键来完成此操作,但不可能使用它,因为对象各不相同。

我怎样才能得到这些差异?

最佳答案

经过努力寻找最佳解决方案后,我成功做到了以下几点......

它非常适合我的需要,我对 JS 很基础,我希望我没有犯下不好的做法,我与任何可能需要它的人分享。

稍后见。

let before = [
  {name: 'Paul', color: 'blue', age: '7'},
  {name: 'Lisa', color: 'rose', age: '4'}
]

// second data entry ( an object is added )

 let after = [
  {name: 'Paul', color: 'blue', age: '7'},
  {name: 'Lisa', color: 'rose', age: '4'},
  {name: 'Adam', color: 'green', age: '11'}
]

// third data entry ( an object is deleted )
let afterD = [
  {name: 'Paul', color: 'blue', age: '7'},
  {name: 'Adam', color: 'green', age: '11'}
]

// new element
let newElement = after.filter(element => {
  return !before.some(e => element.name === e.name);
});

// delete element
let deleteElement = before.filter(element => {
  return !afterD.some(e => element.name === e.name);
});

console.log('new element: ')
console.log(newElement)
console.log('delete element: ')
console.log(deleteElement)

关于javascript - 区分数组中修改的对象或聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55668467/

相关文章:

ruby-on-rails - 在数组中使用 'order' 的替代方法

javascript - 使用 Jasmine 或任何其他替代方案在 Node 上运行测试 .mjs/ESM

javascript - webpack-dev-server 热重载不起作用

javascript - 将 HTML5 全屏 (MAP) 移动到第二个屏幕

c++ - 如何使用既设置计数又填充数组的函数?

arrays - 使用 jq 向现有 JSON 数组添加新元素

Javascript - HTML 中的对象循环和组织数据

javascript - TypeScript setTimeout 循环传递此错误

php - 为什么我不能在 MongoDB 文档中存储关联数组?

php - 数组大小写限制