我有两个数组,orders
和 cartitems
我想创建一个包含两个数组信息的单一有效负载。使用 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
成为一个对象数组,其中每个对象都是整个 payload
和 payloadobject
的组合。
希望这对您有帮助😊
关于javascript - 组合两个不同数组中的两个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56463142/