Estoy tratando de usar el ejemplo de mapa y filtro en:
var data = [ { "pmid": 12637528, "citation_count": 75 }, { "pmid": 12732634, "citation_count": 49 }, { "pmid": 15118089, "citation_count": 88 } ]estoy usando
let iIndex = data.map(d => d.citation_count).filter( d.citation_count >=50);y
let iIndex = data.map(d => d.citation_count).filter( data.citation_count >=50);pero aparece el siguiente error: "err = ReferenceError: d no está definido en eval" o con data.citation err = TypeError: false no es una función en Array.filter
Si quito el filtro .funciona bien, y obtengo una matriz solo del recuento de citas. ¿Alguien puede ayudar con la sintaxis correcta para la parte del filtro? He buscado stackOverflow pero hay muchas respuestas que tienen alrededor de 10 años y no estoy seguro de cuál ha sido la dirección más actual. Incluso he visto una mención de flatMap. Gracias por la ayuda
No es necesario tener d.citation_count en el filtro:
let iIndex = data.map(d => d.citation_count).filter( d => d >=50);La razón por la que su código está fallando es porque el filter espera una función que devuelva un booleano: le ha proporcionado una expresión.
Una solución simple a su código sería envolver su expresión en una función anónima:
const result = data.map(item => item.citation_count).filter(count => count >= 50) También podría simplemente usar reduce , que combina el efecto de las funciones de filter y map , lo que hace que el código sea más eficiente:
const data = [ { pmid: 12637528, citation_count: 75 }, { pmid: 12732634, citation_count: 49 }, { pmid: 15118089, citation_count: 88 }, ] const result = data.reduce((result, { citation_count }) => { if (citation_count >= 50) { result.push(citation_count) } return result }, []) console.log(result)