Как сравнить два массива и добавить то, чего нет?

Храню такой массив на сервере и localstorage

[
   { "to": "all", "text": "" },
   { "to": "user", "text": "" }
]

Также мы знаем кому данное сообщение принадлежит «all» - всем, а если просто токен, то это определенному пользователю. Суть такая, делать запрос на сервер /messages, вытягивать весь массив и сравнивать данный массив с localstorage и проверять, есть ли данный объект в localstorage для пользователя X или для всех и в случае если там нет данного объекта, то добавить в localstorage.

Также нам нужно знать все объекты которые мы добавили в localstorage


Ответы (1 шт):

Автор решения: svm
// Удалённый массив данных
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.

→ Ссылка