No se puede usar .filter() dentro de .map(). Tengo una matriz "itemsArr"
const itemsArr = [9, 10, 13]y otra matriz de "datos"
const data = [{id: 1}, {id: 2}, ... {id: 99}]Estoy tratando de ejecutar un código como este:
itemsArr.map(item => ( data.filter((e) => e.id === item).map(item => ( console.log(item.id) )) ))Pero nada funciona y la consola está vacía. Quiero que solo los registros con "id" de la matriz "itemsArr" se filtren desde mi matriz de "datos"
Código como este funciona bien:
itemsArr.map(item => ( data.map(item => ( console.log(item.id) )) ))UPD:
{ itemsArr.map(item => ( data.filter((e) => e.id === item).map(item => ( <div key={item.id}> <Link href={`/${item.cat}`}><a>{item.cat}</a></Link> <Link href={`/${item.cat}/${item.id}`}><a>{item.name}</a></Link> <Link href={`/${item.cat}/${item.id}`}><a></a></Link> <img alt={item.name} src={`/images/${item.imgmdh}`}></img> </div> )) )) }No hay necesidad de mapear. Puede usar includes para verificar si la identificación existe en itemsArr :
const itemsArr = [1,2,3] const data = [{id: 1}, {id: 2}, {id: 99}] const filtered = data.filter(datum => itemsArr.includes(datum.id)) console.log(filtered)Puede usar array#filter con array#some para obtener el valor coincidente de itemsArr en data .
const itemsArr = [9, 10, 13], data = [{id: 1}, {id: 2}, {id:9}, {id: 10}, {id: 99}], result = itemsArr.filter(num => data.some(o => o.id === num)); console.log(result);