• Как добавлять множество значений в localStorage?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Вопрос: почему ... перезаписывает его

    Буквальный ответ: потому, что setItem() перезаписывает значение по ключу. Ключ у вас один и тот же всегда: "src".

    Как исправить.
    В Storage хранятся только текстовые строки. Поэтому можно там держать JSON-представление массива ссылок. Как вариант, добавлять ссылки не в массив, а в Set, чтобы гарантировать их уникальность, без дублей.
    spoiler
    const links = new Set(); // TODO: надо считать из LS ранее сохранённый
    
    const key = 'photos'; // ключ в Storage
    
    const addLink = (e) => {
      const size = links.size;         // размер до добавления
      links.add(e.target.src);         // добавили ссылку
      if (size === links.size) return; // уже была эта ссылка в наборе
    
      localStorage.setItem(key, JSON.stringify([...links]));
      alert('Фото добавлено в избранное!');
    }
    
    photo.forEach((el) => el.addEventListener('click', addLink));
    Ответ написан
    Комментировать
  • Как добавлять множество значений в localStorage?

    zkrvndm
    @zkrvndm
    Архитектор решений
    При выборе картинок, вам нужно сначала составить массив ссылок, далее этот массив перегнать в JSON и уже это JSON пихать в хранилище. Это же явно какое-то учебное задание? У вас все необходимые инструменты для его выполнения уже есть, думайте.
    Ответ написан
    Комментировать