изменил ответ в соответствии с вашими потребностями:
var data = [
{
"digital_assets": [
{
"id": "AA001",
"url": "https://via.placeholder.com/150"
},
{
"id": "AA002",
"url": "https://via.placeholder.com/150"
}
]
},
{
"products": [
{
"id": ["BB001", "AA001"],
"ProductName": "PROD 485"
},
{
"id": ["BB002","AA002"],
"ProductName": "PROD 555"
}
]
}
]
let matchingIds = [];
let data_assetsObject = data.find(element => {
return Object.keys(element).includes("digital_assets")
})
let productsObject = data.find(element => {
return Object.keys(element).includes("products")
})
data_assetsObject["digital_assets"].forEach(da => {
productsObject["products"].forEach(product => {
if (product.id.includes(da.id)){
matchingIds.push({
url: da.url,
productName: product.ProductName
})
}
})
})
console.log(matchingIds);
рабочая скрипка: https://jsfiddle.net/z2ak1fvs/3/
Надеюсь, что помог.Если вы не хотите использовать новый массив, вы также можете хранить соответствующие данные в элементе, через который вы проходите цикл.
Редактировать: Я думаю, я знаю, почему я получил отрицательное голосование.Мой пример работает, делая данные объектом, а не массивом.изменил фрагмент, чтобы показать это более четко.Почему данные в любом случае массив?Есть ли какая-то причина для этого, или вы можете просто преобразовать его в объект?
Изменить nr2: изменил код, чтобы соответствовать ожиданиям, как я понял, согласно вашим комментариям.теперь он использует вашу структуру данных, и независимо от того, что в данных, вы можете искать объекты, содержащие свойство digital_assets / products.
cheers