Здравствуйте, есть такая задача найти
удалённые и
новые/изменённые
объекты в двух массивах из
60 000 объектов. В своём проекте для работы с массивами и объектами
я использую библиотеку
lodash.
Сейчас я написал вот такой код, но время его работы меня смущает,
в среднем:
60 - 70 сек
Вот схема двух массивов:
const oldArray = [
{
id: (никогда не меняется),
syncDate: (этот параметр не должен учитывается),
x: (другие поля, которые могут изменится в новом массиве)
}
... 60 тысяч таких объектов
]
const newArray = [
такой же, но в нём могут быть добавлены/изменены или удалены некоторые объекты
]
Вот так я нахожу изменённые и добавленные объекты:
const updated = newArray.filter(newObject => {
const oldObject == oldArray.find(o => o.id == newObject.id)
return !lodash.idEqualWith(newObject, oldObject, (_, _, key) => {
return key == 'syncDate' ? true : false
})
})
А вот так я нахожу удалённые объекты:
const deleted = oldArray.filter(oldObject => {
const newObject = newArray.find(o => o.id == oldObject.id)
return !lodash.isEqualWith(newobject, oldobject, (_, _, key) => {
return key == 'syncDate' ? true: undefined
})
}).pullAllBy(updated, 'id').value()
Есть идеи, какой новый подход можно применить? Буду рад любой помощи.