Добавление элементов в массив
Привет, подскажите, будьте любезны)
Хочу добавлять элементы в массив при каждом клике, при этом чтобы к элементу автоматически подставлялся ключ 1, 2, 3.. var arr = {}; var id = 1; $('button').click(function() { var item = {}; item['name'] = 'имя'; item['image'] = 'изображение'; arr = {id: item}; id++; }); Такая конструкция не срабатывает. Строится массив вида: id:{name:имя, image: изображение} а элементы не добавляются, а перезаписываются. Переменная массива id в массиве не читается как переменная. Заранее спасибо. |
arr = {[id]: item};
|
Большое спасибо :dance: :dance: :dance:
|
Еще вопрос, хочу данный массив записать в local storage. Как вычислять последний ключ массива для того чтобы добавлять уникальное значение ключа?
var arr = {}; if(!isEmpty(localStorage.getItem('arr')) { var id = 1; } else { // var id = ??? } $('button').click(function() { var item = {}; item['name'] = 'имя'; item['image'] = 'изображение'; arr = {[id]: item}; localStorage.setItem('arr', JSON.stringify(arr)); id++; }); |
И еще - элемент новый не добавляется а перезаписывается
|
Math.max(...Object.keys(JSON.parse(localStorage.getItem('arr'))))+1 А как добавлять, если arr = {} всегда? |
Цитата:
arr[id] = item; |
Цитата:
Выдает ошибку Uncaught TypeError: Cannot set property '2' of null |
<button>Add</button> <pre></pre> <script> var arr = {}, id = 0; document.querySelector('button').addEventListener('click', function() { var item = {time: Date.now()} arr[++id] = item; document.querySelector('pre').textContent = JSON.stringify(arr, null, '\t') }); </script> Работает? Что-то вы не так делаете. |
Цитата:
|
Цитата:
А вот у вас работать будет в любом случае не так как ожидается. Не так ли должно быть: если в локальном хранилище имеется сохраненный объект, то arr равен декодированной записи из хранилища, а id максимальному значению его ключа, иначе ara = {}, id = 0? |
alex_wm,
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> </head> <body> <button>Add</button> <pre></pre> <script> var arr = localStorage.arr; arr = arr ? JSON.parse(arr) : []; function addArr() { var item = {}; item['name'] = 'имя'; item['image'] = 'изображение'; arr.push(item); showArr(); } function showArr() { var jsonArr = JSON.stringify(arr, null, '\t'); document.querySelector('pre').textContent = localStorage.arr = jsonArr } showArr() document.querySelector('button').addEventListener('click', addArr); </script> </body> </html> |
laimas, огромное вам спасибо, сделал как вы, просто местами условия поменяли. Все работает, супер!!!
|
Часовой пояс GMT +3, время: 09:34. |