繁体   English   中英

合并来自两个不同数组的两个对象

[英]Combining two objects from two different arrays

我有两个数组, orderscartitems

我想创建一个包含两个数组信息的singel有效载荷。 使用Axios发布到我的API。

我尝试映射一个数组(因为我只需要另一个数组中的一项),然后尝试像这样将对象添加在一起:

const payload = []
let newArray = []

this.props.cartItems.map((item) => {
  let payloadobject = {
    productName: item.productname,
    amount: item.qty,
    price: item.price,
    order_id: this.props.cart.id,
  }

  newArray = appendObjTo(payload, payloadobject);
})

希望newArray可以保存组合的组合数组。 但是遇到错误:

找不到变量: appendObjTo

如何合并两个对象? 它们各自位于自己的阵列中

编辑

当前数据结构

catritems

cartItems Array [
  Object {
    "id": 2,
    "price": "6.50",
    "productname": "Baco",
    "qty": 2,

  }
]

命令

orders Array [
  Object {
    "id": 2,
  }
]

期望的输出

newArray Array [Object {“ id”:2,“ price”:“ 6.50”,“ productname”:“ Baco”,“ qty”:2,2,“ order_id”:1(持有订单对象的ID),}]

由于appendObjTo因此您收到错误消息。 它不是标准函数,如果您自己定义了它,则可能在另一个作用域中。

可以使用Object.assign函数( MDN参考 )代替appendObjTo 可以这样使用:

newArray = Object.assign({}, payload, payloadobject);

但是,您的代码中还有另一个错误。 现在,您将每个组合对象分配给newArray ,并在en处将保存最后一个组合对象,而不是数组。
您提供的map lambda函数应该返回一个新对象,该对象要替换新数组中的输入对象。 当所有对象都通过map函数循环时,将返回一个新数组( MDN参考 )。 在您的情况下,可以这样使用:

const payload = [];

let newArray = this.props.cartItems.map((item) => {
    let payloadobject = {
        productName: item.productname,
        amount: item.qty,
        price: item.price,
        order_id: this.props.cart.id
    };

    return Object.assign({ }, payload, payloadobject);
});

这将使newArray是对象的一个阵列,其中每个对象是整个的组合payload ,和payloadobject

希望这可以帮助😊

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM