Quiero obtener cosas con ID de collectionId que coincidan con las de la lista. En otras palabras, quiero obtener el resultado deseado. ¿¿Cómo puedo hacerlo?? por favor, ayúdame....
const music_list = { "resultCount": 50, "results": [{ "collectionId": 123, "ArtistId": "BLACKPINK" }, { "collectionId": 456, "ArtistId": "BTS" }, { "collectionId": 789, "ArtistId": "CARDIBI" } ] } const list = [123, 142, 118]; En esta situación, resultado deseado = [{"collectionId":123, "ArtistId": "BLACKPINK"}]
Puede map la lista a los objetos relevantes: para cada ID, intentará find el objeto correspondiente en la matriz de resultados. Al final, puede filter los elementos que faltan.
const result = list .map(id => music_list.results.find(item => item.collectionId === id)) .filter(item => item) Cómo funciona: music_list.results.find(item => item.collectionId === 123) devolvería el elemento en music_list.results que tiene collectionId: 123 (o undefined si no existe tal elemento). Además, list.map(id => ...something...) aplicaría ...something... a cada id de la list y devolvería una nueva matriz con los resultados. Así que aquí asignamos los ID a los objetos coincidentes en su matriz de resultados. Al final, usamos filter para eliminar elementos que son falsos ( undefined es falso), es decir, eliminamos los elementos faltantes del resultado (sin eso, devolvería algo como [{ ... }, undefined, undefined] ).
Puedes verlo en acción aqui:
const music_list = { "resultCount": 50, "results": [ { "collectionId": 123, "ArtistId": "BLACKPINK" }, { "collectionId": 456, "ArtistId": "BTS" }, { "collectionId": 789, "ArtistId": "CARDIBI" } ] } const list = [123, 142, 118]; const result = list .map(id => music_list.results.find(item => item.collectionId === id)) .filter(item => item); console.log(result);