【问题标题】:Adding objects to array multiple times多次将对象添加到数组
【发布时间】:2019-10-22 18:06:03
【问题描述】:

我在全局范围内有这个数组:

const orders = [];

我想将一个对象推送到这个数组。

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

问题是我想在每次点击事件后将一个对象推送到数组中。现在它只为第一个点击事件添加了一个对象到数组中,但是在我再次点击之后,它不会再推送了。

【问题讨论】:

  • Push ??是您的自定义功能。我在这里看不到任何array.push()。你在哪里推它?
  • orders.Push = $item 不会推送任何内容。它将用$item 替换orders.Push 的内容。如果orders.Push 应该是一个数组,请尝试orders.Push.push( $item )
  • 我想你打算做的是orders.push($item)而不是orders.Push = $item
  • 嗯...好吧,如果此代码实际上是在您所说的第一次将某些内容推送到该数组中,那么您必须使用一些框架来映射该 orders.Push = $item 到 orders.push ($项目)。因此,如果这有效,那么它一定是您实施它的方式。您可以发布实际调用“addItem”函数的代码吗?

标签: javascript arrays object push


【解决方案1】:

orders.Push = $item 可以像[Push: $item] 一样为 Push 赋值,并在下次调用函数时替换 Push 值。

这个的正确使用方法可以是

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

【讨论】:

    【解决方案2】:

    这有点不正统,但我设法使用您的代码,未经修改以获得合理的结果。

    // ▼ ============= 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; }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-13
      • 2018-09-06
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      相关资源
      最近更新 更多