Как сравнить два массива и добавить то, чего нет?
Храню такой массив на сервере и localstorage
[
{ "to": "all", "text": "" },
{ "to": "user", "text": "" }
]
Также мы знаем кому данное сообщение принадлежит «all» - всем, а если просто токен, то это определенному пользователю. Суть такая, делать запрос на сервер /messages, вытягивать весь массив и сравнивать данный массив с localstorage и проверять, есть ли данный объект в localstorage для пользователя X или для всех и в случае если там нет данного объекта, то добавить в localstorage.
Также нам нужно знать все объекты которые мы добавили в localstorage
Ответы (1 шт):
// Удалённый массив данных
let remoteData = [
{ "to": "all", "text": "Привет, всем!" },
{ "to": "user", "text": "Привет, пользователь!" },
{ "to": "user123", "text": "Это сообщение только для тебя!" },
];
// Локальный массив пользователя
let localData = [];
// Хеш пользователя
const userHash = "user123"; // Пример хеша пользователя
// Функция для добавления текста в локальный массив
function updateLocalData(remoteData, localData, userHash) {
remoteData.forEach(item => {
if (item.to === "all") {
// Проверяем, есть ли текст уже в локальном массиве
if (!localData.includes(item.text)) {
localData.push(item.text); // Добавляем текст, если to = "all" и его ещё нет в массиве
}
} else if (userHash === item.to) {
// Проверяем, есть ли текст уже в локальном массиве
if (!localData.includes(item.text)) {
localData.push(item.text); // Добавляем текст, если to = "user" и хеш совпадает
}
}
});
}
// Вызов функции для обновления локального массива
updateLocalData(remoteData, localData, userHash);
// Вывод результата
console.log(localData);
Также нам нужно знать все объекты которые мы добавили в localstorage
Извлекаете весь массив из localstorage в переменную localData, модифицируете его как показано выше и обратно в localstorage.