Хорошо, насколько я понял, у вас есть некоторые локальные данные и некоторые удаленные данные. Вы сравните как данные по критериям даты, так и удаленный элемент, дата которого отличается от даты локального элемента, и обновите этот локальный элемент.
С учетом следующих локальных данных .
[
{
"title" : "My title",
"key": 12345,
"date": "25-06-2019"
},
{
"title" : "Some other title",
"key": 54321,
"date": "26-06-2019"
},
{
"title" : "Yet Some other title",
"key": 98765,
"date": "27-06-2019"
}
]
Удаленные данные
let remoteData = [
{
"title": "My title",
"key": 12345,
"date": "28-06-2019"
},
{
"title": "Some other title",
"key": 54321,
"date": "29-06-2019"
},
{
"title": "Yet Some other title",
"key": 98765,
"date": "27-06-2019"
},
{
"title": "Also Yet Some other title",
"key": 47289,
"date": "30-06-2019"
}
]
Итак, моя реализация будет следующей
let localData = [
{
"title" : "My title",
"key": 12345,
"date": "25-06-2019"
},
{
"title" : "Some other title",
"key": 54321,
"date": "26-06-2019"
},
{
"title" : "Yet Some other title",
"key": 98765,
"date": "27-06-2019"
}
] ;
const getRemoteData = async() {
try {
const response = await Axios.get('api_url')
return response;
} catch(err) {
throw err
}
}
const someFunction = async() {
try {
let remoteData = await getRemoteData()
localData = compareData(remoteData, localData)
// process with updated localData
} catch(err) {
handleError(err)
}
}
const compareData = (remoteData, localData) => {
let data = remoteData.map((remote_element) => {
for(let i = 0; i < localData.length; i++) {
let local_element = localData[i];
if (local_element.key === remote_element.key) {
if (local_element.date === remote_element.date) {
return local_element; // no need to update.
} else {
return remote_element; // found diff dates. Update local data.
}
}
}
return remote_element; // Found new remote element insert into localData.
})
return data
}
Вывод будет сочетанием как обновленных данных, так и локальных данных.
[
{
"title": "My title",
"key": 12345,
"date": "28-06-2019"
},
{
"title": "Some other title",
"key": 54321,
"date": "29-06-2019"
},
{
"title": "Yet Some other title",
"key": 98765,
"date": "27-06-2019"
},
{
"title": "Also Yet Some other title",
"key": 47289,
"date": "30-06-2019"
}
]
Дайте мне знать, если это так.