Добавление объектов в массив несколько раз - PullRequest
0 голосов
/ 22 октября 2019

У меня есть этот массив в глобальной области видимости:

const orders = [];

Я хочу поместить объект в этот массив.

const addItem = ($id, $name, $price) => {
  const $item = ({
    id: $id,
    name: $name,
    price: $price,
    amount: 1
   });
  orders.Push = $item;
  return orders;
 };

Дело в том, что я хочу помещать объект в массив после каждого кликвент-события. На данный момент он добавляет только 1 объект в массив для первого клик-события, но после того, как я нажму другой раз, он больше не будет выдвигаться.

Ответы [ 2 ]

0 голосов
/ 22 октября 2019

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

// ▼ ============= No Changes ============= ▼
const orders = [];
const addItem = ($id, $name, $price) => {
  const $item = ({
    id: $id,
    name: $name,
    price: $price,
    amount: 1
  });
  orders.Push = $item;
  return orders;
};
// ▲ ============= No Changes ============= ▲

[
  { id : 1, name : 'foo', price : '1.00' },
  { id : 2, name : 'bar', price : '2.00' }
].map((data) => {
  addItem(data.id, data.name, data.price);
  orders.push(orders.Push); // Let's push "Push" onto the array...
});

console.log(orders); // Log the result...
.as-console-wrapper { top: 0; max-height: 100% !important; }
0 голосов
/ 22 октября 2019

orders.Push = $ item может присвоить значению Push, как [Push: $item], и заменит значение Push при следующем вызове функции.

Правильный способ использования этого может быть как

const orders = [];
const addItem = ($id, $name, $price) => {
  const $item = {
    id: $id,
    name: $name,
    price: $price,
    amount: 1
   };
  orders.push($item);
  return orders;
 };
...