Вы можете сделать e
массив и отправить его, но вы хотите использовать декларативные методы , чтобы создать новый массив по двум причинам:
- Это проще для понимания поскольку базовая логика абстрагируется от таких функций, как
map()
, reduce()
, filter()
и т. д. - В некоторых случаях, например, когда вы изменяете переменную, недопустимодля выполнения асинхронных операций необходимо передать функцию обратного вызова.
Вы можете использовать Array.prototype.map()
и Array.prototype.filter()
для создания нового массива на основе исходного, например:
let product_id = [{ "order_id": "281774", "product_id": "203751" }, { "order_id": "281774", "product_id": "198999" }, { "order_id": "281774", "product_id": "199291" }, { "order_id": "281774", "product_id": "256156" }];
let product_details = [{ "id": "219", "product_id": "198999", "sku": "20148089", "prod_name": "Chocolate Mousse 1L", "price": "39.99" }, { "id": "220", "product_id": "199291", "sku": "20008307", "prod_name": "Medium Carrots 500g", "price": "9.99" }, { "id": "221", "product_id": "2047590", "sku": "6009207908908", "prod_name": "Fresh Spicy Lentil & Vegetable Soup 600g", "price": "39.59" }, { "id": "222", "product_id": "1990150", "sku": "6009182131643", "prod_name": "Bulk Gouda Cheese 900g", "price": "77.62" }, { "id": "249", "product_id": "2000510", "sku": "6009195203320", "prod_name": "Salted Butter 500g", "price": "76.95" }]
let product_id_only = product_id.map(id => id.product_id);
let result = product_details.filter(detail => product_id_only.includes(detail.product_id));
console.log(result);
Объяснение кода:
product_id_only
определяется функцией map()
, которая создает новый массив на основе возвращаемых значений обратного вызова, предоставленного, учитывая каждый элемент в массиве в качестве параметра.Поскольку обратный вызов получает параметр id
и возвращает id.product_id
, новый массив состоит только из строк product_id
.
result
вычисляется с помощью функции filter()
, которая передает каждый элементмассив и получает логическое значение в качестве возвращаемого значения.В этом случае product_id_only.includes(detail.product_id)
является возвращаемым значением, которое истинно, когда detail
'product_id
включено в ранее созданный массив с map()
.
Надеюсь, это поможет!