В настоящее время я использую набор данных, который представляет собой массив объектов. Чтобы попытаться ускорить время загрузки, я пытаюсь использовать 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)), и это также вернуло строку.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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