#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:
- Переместите настройку прототипа за пределы цикла
- установите начальный объект вне цикла
- Зачем ждать 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];