簡體   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