Объединение двух объектов из двух разных массивов - PullRequest
0 голосов
/ 05 июня 2019

У меня есть два массива, orders и cartitems

Я хочу создать отдельную полезную нагрузку с информацией о обоих массивах вместе.для публикации в моем API с помощью Axios.

Я попытался сопоставить один массив (так как мне нужен только один элемент из другого массива), а затем пытался добавить объекты вместе следующим образом:

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

Как объединить оба объекта?Каждый из которых находится в стороне от своего массива

edit

текущая структура данных

catritems

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

  }
]

orders

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

желаемый вывод

newArray Array [Object {"id": 2, "price": "6.50", "productname": "Baco", "qty": 2," order_id ": 1 (сохранить идентификатор из объекта заказа),}]

1 Ответ

1 голос
/ 05 июня 2019

Вы получаете сообщение об ошибке, поскольку appendObjTo не определено. Это не стандартная функция, и, если вы определили ее самостоятельно, она, вероятно, находится в другой области.

Вместо appendObjTo можно использовать функцию Object.assign ( Ссылка MDN ). Это можно использовать так:

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

Однако в вашем коде есть еще одна ошибка. Прямо сейчас вы присваиваете каждому объединенному объекту newArray, и в en он будет содержать последний объединенный объект, а не массив.
Лямбда-функция, которую вы предоставляете map, должна возвращать новый объект, который вы хотите заменить входным объектом в новом массиве. Когда все объекты проходят через функцию 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.

Надеюсь, это поможет 10

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...