kotcich
@kotcich
Я скучный.

Можно ли сохранить свойство объекта в массив localStorage?

Есть массив table = [] для кеша, в него я хочу добавлять данные вида key: obj.
Дело в том, что метод push() действительно добавляет объект к концу массива, но он нумерует ключи по порядку.
Мне это не подходит, так как я должен знать к чему обращаться. Если использовать push({ key: value }), то тут аж 2 проблемы
1)key не принимает значение переменных, а статично задать условно "myValue": value я не могу, так как у всех свойств будут одинаковые ключи.
2)Да и в этом случаи, если я впишу туда постоянное значение текстом(test допустим), то получится вот такая вот вложенность:
6:
test: Object
items: (...)
_links: (...)
_meta: (...)


То есть и название постоянное, что уже как бы мимо, так еще толку то от него, если обращаться придется к шестерке.

А вот если добавлять через:
state.table[window.location.href] = value;
То оно добавляется в массив, но, барабанная дробь... в localStorage оно не записывается. Как это исправить?
  • Вопрос задан
  • 121 просмотр
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
key не принимает значение переменных
Принимает.
const arr = [];

const key = "xxx";
const value = "yyy";

// подробно:
const item = {};
item[key] = value; 

// или покороче:
const item = {[key]: value};

// в массив
arr.push(item);
arr // [{xxx: "yyy"} ]

запись в LS
const lsKey = "mytable";

// Сохранить в LS:
localStorage.setItem(lsKey, JSON.stringify(arr));

// Получить из LS:
const arr = JSON.parse(localStorage.getItem(lsKey)) || [];

Upd. в общем, объявляйте не массив, а объект:
state.table = {}; // не квадратные, а фигурные

state.table[url] = value;

P.S. Да, массив — это объект, и можно ему поназначать левых свойств. Но это плохо. Хотя бы потому, что при сериализации в JSON все левые свойства пропадут:
const arr = [];     // массив! Но «в JS всё — объект»
arr.X = "Y";        // можем себе позволить!
console.log(arr.X); // "Y" ура-а, хакнули JavaScript!

JSON.stringify(arr) // [] - пустой массив, облом.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
А мы код записи в LS увидим?
На всякий случай напоминаю, что хранить там получится только строки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы