Javascript – как запретить localStorage хранить данные в виде строки?

В настоящее время я использую набор данных, который представляет собой массив объектов. Чтобы попытаться ускорить время загрузки, я пытаюсь использовать localStorage для хранения данных и быстрого доступа к ним. Большая проблема заключается в том, что данные хранятся не в виде массива объектов, а в виде строки. Сами данные выглядят примерно так.

[{id: 1, name: "BP", industry: "oil and gas", indicator: "Board Oversight"}, 
{id: 2, name: "Shell", industry: "oil and gas", indicator: "Board Oversight"}]

Весь этот массив хранится в переменной с именем dataSet, и я попытался сохранить его в локальном хранилище вот так.

localStorage.setItem('finalDataset', dataSet)

Когда я пытаюсь получить элемент, данные, хранящиеся внутри, выглядят правильно, но данные представляют собой строку, а не то, что я действительно хочу. Итак, как я могу хранить эти данные внутри localStorage в точно таком же формате?

Я также попытался сделать localStorage.setItem('finalDataset', JSON.stringify(dataSet)), и это также вернуло строку.

Вы не можете. localStorage всегда сохраняет данные в виде строк. Используйте JSON.parse(), чтобы вернуть ваши данные обратно в массив.

Wais Kamal 17.12.2020 10:32
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
745
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Javascript – как запретить localStorage хранить данные в виде строки?

Вы не можете, вот что он делает.

Что вы можете сделать, так это использовать удобный для строк формат сериализации, такой как JSON.

Чтобы получить:

const data = JSON.parse(localStorage.getItem("name") || "null");

Это извлекает и десериализует данные. Вы получаете null, если для этого ключа ничего не сохранено. (Технически, вам даже не нужна часть || "null", так как localStorage.getItem("name") возвращает null, а JSON.parse приводит свой аргумент к строке, но... мне все равно нравится включать его, для... ясности?)

Хранить:

localStorage.setItem("name", JSON.stringify(data));

Ответ прост: вы не можете хранить его как тип, отличный от строкового значения.

Выдержка из API:

Ключи и значения всегда в формате UTF-16 DOMString, который использует два байта на символ. Как и в случае с объектами, целочисленные ключи автоматически преобразуются в строки.

Источник: https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

Вы не можете... Данные всегда сохраняются в виде строки.

https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

«Ключи и значения всегда представлены в формате UTF-16 DOMString, в котором используется два байта на символ. Как и в случае с объектами, целочисленные ключи автоматически преобразуются в строки».

Хитрость заключается в использовании JSON.stringify при сохранении и JSON.parse при извлечении данных.

Другие вопросы по теме