javascript - 组合两个不同数组中的两个对象

标签 javascript arrays object

我有两个数组,orderscartitems

我想创建一个包含两个数组信息的单一有效负载。使用 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能够保存组合后的组合数组。但遇到错误:

can't find variable: appendObjTo

如何组合这两个对象?它们各自位于自己的数组的一侧

编辑

当前数据结构

catritems

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

  }
]

订单

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

期望的输出

newArray 数组 [ 目的 { “id”:2, “价格”:“6.50”, “产品名称”:“巴科”, “数量”:2, "order_id": 1 (保存订单对象的 id), } ]

最佳答案

由于未定义 appendObjTo,您收到错误消息。它不是一个标准函数,如果您自己定义了它,它可能在另一个范围内。

您可以使用 Object.assign 函数 ( MDN Reference ),而不是 appendObjTo。它可以像这样使用:

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

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

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 成为一个对象数组,其中每个对象都是整个 payloadpayloadobject 的组合。

希望这对您有帮助😊

关于javascript - 组合两个不同数组中的两个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56463142/

相关文章:

JavaScript - Express - MongoDb - Mongoose findOneAndUpdate 返回未定义

java - 服务服务器调用后滚动到 html 上的相关项目

c++ - 在不调用默认构造函数的情况下声明对象

java - 创建该对象的新实例时滚动浏览对象

javascript - 合并和重新排序两个对象数组的问题

javascript - 在网络 worker 之间共享变量? [全局变量?]

javascript - 即使存在重复项,也仅从 JS 数组中删除一项

arrays - Swift4 initWithArray 等价物

JavaScript - 无法读取未定义的属性 'toLowerCase'

javascript - 在javascript中访问嵌套数组项