我有两个数组,orders
和cartitems
我想创建一个包含两个数组信息的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
如何合并两个对象?它们各自位于自己的阵列中
编辑
当前数据结构
类别
cartItems Array [
Object {
"id": 2,
"price": "6.50",
"productname": "Baco",
"qty": 2,
}
]
订单
orders Array [
Object {
"id": 2,
}
]
所需的输出
newArray Array [ 对象{ “ id”:2 “ price”:“ 6.50”, “ productname”:“ Baco”, “数量”:2 “ order_id”:1(保留订单对象的ID), } ]
答案 0 :(得分:1)
由于未定义appendObjTo
,因此收到错误消息。它不是标准函数,如果您自己定义了它,则可能在另一个作用域中。
您可以使用appendObjTo
函数(MDN Reference)代替Object.assign
。可以这样使用:
newArray = Object.assign({}, payload, payloadobject);
但是,您的代码中还有另一个错误。现在,您将每个组合对象分配给newArray
,并在en处将保存最后一个组合对象,而不是数组。
您提供给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
的组合。
希望这对您有帮助>