Пожалуйста, помогите мне с localStorage

#javascript

Вопрос:

У меня есть еще 2 массива, которые я хочу после добавления массива 2 в массив 1 Массив 1 будет сохранен в переменной lobalstorage для запуска в следующий раз Текущая проблема: после выхода с сайта массив 1 сбрасывается до исходного значения

 let arr1 = []

setTimeout(function() {

      setInterval(myTimer, 5000);

      function myTimer() {

        debugger


        if (arr1.length == 0) {
          arr1 = [1, 2, 3, 4, 5]
        } else {
          arr1 = localStorage.getObj("StoreArrToken");

        }
        let arr2 = [6, 8, 10]

        // hàm xử lý lưu giá trị mảng vào LocalStore
        Storage.prototype.setObj = function(key, obj) {
          return this.setItem(key, JSON.stringify(obj))
        }
        Storage.prototype.getObj = function(key) {
          return JSON.parse(this.getItem(key))
        }

        var duplicates = arr2.filter(function(val) {
          return arr1.indexOf(val) == -1;
        });

        debugger
        if (duplicates.length == 0) {
          console.log("Duplicate");
        } else {
          arr1 = arr1.concat(duplicates);
          console.log(arr1);
          // Store
          localStorage.setObj("StoreArrToken", arr1);

        }

      }, 1500000000000000);
 

Комментарии:

1. Здравствуйте и добро пожаловать. На будущее, пожалуйста, помните, что JavaScript и Java — это два разных языка .

2. Что это за тайм-аут: setTimeout(function(){ /* ... */ }, 1500000000000000) ?

3. Проверьте, есть ли в локальном хранилище элемент с ключом «StoreArrToken», прежде чем выполнять его безоговорочно let arr1=[] при запуске.

Ответ №1:

  1. Переместите настройку прототипа за пределы цикла
  2. установите начальный объект вне цикла
  3. Зачем ждать 17 361 111 лет, прежде чем запускать это?
      Storage.prototype.setObj = function(key, obj) {
       return this.setItem(key, JSON.stringify(obj))
     }
     Storage.prototype.getObj = function(key) {
       const str = this.getItem(key);
       return !!str ? JSON.parse(str) : null; // str should never be "0" since we store an array
     };
     let arr1 = localStorage.getObj("StoreArrToken") ||  [1, 2, 3, 4, 5];