как сохранить данные в localstorage

143
04 июня 2022, 03:40

В textarea записываются данные.

<textarea id="primeContainer">
var text = document.getElementById('primeContainer')
localStorage.setItem('key', text);
var value = localStorage.getItem('key');
localStorage('key'); // удалит данные под переданным ключом
localStorage.clear(); // полностью очистит локальное хранилище
try {
    localStorage.setItem('key', 'text');
} catch (e) {
    if (e === QUOTA_EXCEEDED_ERR) {
        alert('Превышен лимит');
    }
}

как правильно сохранить их в localStorage?

код: https://codepen.io/bogdan-melnik-the-animator/pen/dyXEgLo

Answer 1

В textarea нет никакого текста, соответсвенно оно и не может записать в локал сторедж. Сделайте обработчик события, и добавляйте в локал сторедж по событию. Но основная ошибка в том что вы в локал сторедж пытаетесь записать DOM элемент, а нужно вытащить само значение localStorage.setItem('key', text.value). И еще нужно закрывать textarea

var text = document.getElementById('primeContainer')
          
text.addEventListener('change', (e) => {
    localStorage.setItem('key', text.value)
})
<textarea id="primeContainer">Some text</textarea>

Answer 2

Проблема не только в сохранении чисел. Вся бесполезность задачи основывается на том, что выбирается самый неоптимальный способ поиска простых чисел. Их бесполезно сохранять - это слишком медленно. Вы ищете числа от 0 до 2 миллионов, вот вам алгоритм, который за несколько секунд найдёт числа от 0 до 1 миллиарда. Можно и больше, но тогда запускайте не в браузере, а на nodejs. И это еще не самый оптимальный алгоритм, там есть что оптимизировать. Например, пропуск поиск простых чисел среди чётных чисел.

// Функция возвращает масиив простых чисел от 0 до 1073741824 (2**30)
function makeDict(){
  // Лимит поиска
  const lim = 2**30;
  // Буфер
  const buf = new Uint8Array(lim-1);
  // Первые числа 0 и 1 сразу пометим не простыми числами
  buf[0] = 1;
  buf[1] = 1;
  // Корень из лимита поиска
  const sqrtLim = 2**15;
  // Сам поиск чисел
  // Алгоритм простой:
  // Ищем следующее непростое число.
  // Как нашли - помечаем все числа в буфере непростыми
  // начиная с следующего числа и далее с шагом, равным числу.
  // Например, 
  // нашли число 2, помечаем 4, 6, 8, 10, 12, 14...
  // нашли число 3, помечаем 6, 9, 12, 15, 18, 21...
  // число 4 - уже не простое, пропускаем
  // нашли число 5, помечаем 10, 15, 20, 25, 30...
  // число 6 - уже не простое, пропускаем
  // нашли число 7, помечаем 14, 21, 28, 35, 42...
  // и так до квадратного корня из лимита...
  for(let i = 2; i< sqrtLim; i=next(buf,i)){
    for(let p = 2*i; p< lim - 1; p += i){
      buf[p] = 1;
    }
  }
  // Подсчет количества найденных чисел
  let count = 0;
  for(let i = 2; i< lim-2; i++){
    if(!buf[i]){
      count++;
    }
  }
  // Создаем массив по найденному количеству чисел
  const dict = new Uint32Array(count);
  // Запись этих чисел в новый массив
  for(let i = 2, found = 0; i < lim-2; i++){
    if(!buf[i]){
      dict[found++] = i;
    }
  }
  return dict;
  // Функция ищет следующее непомеченное число в буфере
  function next(buf,n){
    for(let i = n+1; i < lim-2; i++){
      if(!buf[i]){
        return i;
      }
    }
    return lim-1;
  }
}

console.time('Поиск чисел');
const dict = makeDict();
console.timeEnd('Поиск чисел');
console.log('Найденно простых чисел:', dict.length);
console.log('Первые 100 чисел:', dict.slice(0, 100));
console.log('Последние 100 чисел:', dict.slice(dict.length-101, dict.length-1));
/**
Вывод:
Поиск чисел: 1.780s
Найденно простых чисел: 54400028
Первые 100 чисел: Uint32Array(100) [
    2,   3,   5,   7,  11,  13,  17,  19,  23,  29,  31,  37,
   41,  43,  47,  53,  59,  61,  67,  71,  73,  79,  83,  89,
   97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
  157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223,
  227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281,
  283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359,
  367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433,
  439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
  509, 521, 523, 541
]
Последние 100 чисел: Uint32Array(100) [
  1073739679, 1073739683, 1073739721, 1073739739, 1073739749,
  1073739767, 1073739817, 1073739853, 1073739859, 1073739881,
  1073739883, 1073739893, 1073739911, 1073739917, 1073739937,
  1073739949, 1073739983, 1073740013, 1073740049, 1073740061,
  1073740067, 1073740079, 1073740123, 1073740127, 1073740133,
  1073740139, 1073740147, 1073740163, 1073740177, 1073740183,
  1073740189, 1073740201, 1073740249, 1073740379, 1073740391,
  1073740403, 1073740439, 1073740463, 1073740477, 1073740489,
  1073740501, 1073740517, 1073740523, 1073740529, 1073740537,
  1073740541, 1073740543, 1073740567, 1073740571, 1073740609,
  1073740649, 1073740691, 1073740693, 1073740697, 1073740781,
  1073740783, 1073740793, 1073740807, 1073740819, 1073740847,
  1073740853, 1073740879, 1073740909, 1073740933, 1073740951,
  1073740963, 1073741047, 1073741077, 1073741101, 1073741173,
  1073741189, 1073741197, 1073741213, 1073741237, 1073741287,
  1073741309, 1073741311, 1073741329, 1073741371, 1073741381,
  1073741387, 1073741399, 1073741419, 1073741441, 1073741467,
  1073741477, 1073741503, 1073741527, 1073741561, 1073741567,
  1073741621, 1073741651, 1073741663, 1073741671, 1073741689,
  1073741717, 1073741719, 1073741723, 1073741741, 1073741783
]
*/

READ ALSO
как скрыть картинку и вывести другую в fancybox?

как скрыть картинку и вывести другую в fancybox?

Не получается скрыть картинку в fancybox, документации не нашел, documentgetElementById(wheel)

169
Редактирование данных пользователя React

Редактирование данных пользователя React

Помогите с кейсом,нужно сделать post запрос получить данные пользователя fio,inn,password и записать их в стейт потом отобразить в input и что бы администратор...

181
Хочу переделать скрипт добавляющий определенные символы

Хочу переделать скрипт добавляющий определенные символы

Делаю скрипт на jquery, который должен добавлять к определенному символу/словосочетанию/цифрам также определенные символы/словосочетания/цифрыНапример...

176
React проблемы с модальным окном и массивом

React проблемы с модальным окном и массивом

Я использую состояние все работает нормально, за исключением модального окнаВнутри состояния, я использую объекты, которые нормально отображаются...

146