Мне нужно заполнить файл JSON, теперь у меня есть что-то вроде этого:
{"element":{"id":10,"quantity":1}}
И мне нужно добавить еще один «элемент». Мой первый шаг - поместить этот json в тип Object с помощью cart = JSON.parse
, теперь мне нужно добавить новый элемент. Я предположил, что должен использовать cart.push
для добавления другого элемента, я попробовал это:
var element = {};
element.push({ id: id, quantity: quantity });
cart.push(element);
Но я получаю ошибку «У объекта нет метода push», когда я пытаюсь это сделать element.push
, и я думаю, что я делаю что-то ОЧЕНЬ неправильно, потому что я нигде не говорю «элемент».
Как я могу это сделать?
Изменить: извините за все, у меня было много путаницы в моей голове.
Я думал, что могу получать только тип объекта при получении данных JSON.parse
, но я получаю то, что я положил в JSON.
Помещение массива вместо объекта решило мою проблему, я также использовал множество предложений, спасибо всем!
источник
Ответы:
Ваш элемент не является массивом, однако ваша корзина должна быть массивом для поддержки многих элементов элемента. Пример кода:
Если вы хотите, чтобы cart была массивом объектов в форме,
{ element: { id: 10, quantity: 1} }
выполните:JSON.stringify()
была упомянута как проблема в комментарии:источник
С этим рядом
Вы определяете,
element
чтобы быть простым объектом. У нативного объекта JavaScript нетpush()
метода. Чтобы добавить новые элементы в простой объект, используйте этот синтаксис:С другой стороны, вы можете определить
element
как массив, используяЗатем вы можете добавить элементы, используя
push()
.источник
element[ yourKey ] = yourValue;
это лучший способ добавить элемент к объекту.element[ yourkey ] = [ element{yourkey], yourNewValue ];
Если корзина должна храниться как объект, а не как массив (хотя я бы рекомендовал хранить его как []), вы всегда можете изменить структуру, чтобы использовать идентификатор в качестве ключа:
Это позволяет добавить несколько товаров в корзину следующим образом:
источник
Для добавления к объекту используйте
Object.assign
Вывод:
источник
element
, поэтому он будет иметь только последний элемент.Я читал что-то, связанное с этой попыткой, если это полезно.
1. Определить функцию push внутри объекта.
Теперь вы можете выдвигать элементы как массив
Это будет производить этот объект
Обратите внимание, что элементы добавляются с помощью индексов, а также видно, что к объекту добавлено новое свойство длины. Это также будет полезно для определения длины объекта. Это работает из-за общего характера
push()
функцииисточник
Вы должны написать
var element = [];
в javascript
{}
пустой объект и[]
пустой массив.источник
источник
этот код работает.
источник
Попробуй это:
источник
Добавление новых элементов ключ / пара в исходный объект:
obj новое значение:
источник
Если кто-то захочет создать похожий JSON, без использования
cart
в качестве массива, то здесь:У меня есть массив объектов
myArr
как:и я попытаюсь создать JSON со следующей структурой:
Вы можете просто сделать
источник
cart[key]=value
основном это карта ключевых значений. Сделайте upvote, если ответ был полезным. Спасибо!Для тех, кто все еще ищет решение, я думаю, что объекты должны быть сохранены в массиве, как ...
Затем, когда вы хотите использовать элемент в качестве объекта, вы можете сделать это ...
Поместите переменную в id_that_we_want и присвойте ей идентификатор элемента, который мы хотим получить из нашего массива. Объект "elemnt" возвращается. Конечно, нам не нужен идентификатор, чтобы найти объект. Мы могли бы использовать любое другое свойство, чтобы найти.
источник
ИЛИ:
источник
push - это метод массивов, поэтому для объекта вы можете получить индекс последнего элемента и, вероятно, выполнить ту же работу, что и push для объекта, как показано ниже.
затем добавьте объект в новый индекс элемента
источник
если вы не планируете делать цикл в JS, например, перейдите к PHP, чтобы сделать цикл для вас
эта концепция может немного помочь
источник
Это старый вопрос, в любом случае на сегодняшний день лучше всего использовать Object.defineProperty
источник