![](/img/trans.png)
[英]Combining different properties of two different arrays of objects in one array of objects
[英]Combining two objects from two different arrays
我有两个数组, 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
如何合并两个对象? 它们各自位于自己的阵列中
编辑
当前数据结构
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.