这次我遇到了以下问题,我从数据库中获取一个对象数组,该数组每隔几分钟更新一次,问题是与之前的数组相比,该数组可能包含新对象或删除的对象。 . 示例;
第一次数据输入
[
{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/