Tengo una pregunta. Estoy tratando de escribir pero fallé. Necesito tu ayuda. Por favor, ayúdame.
Supongamos que tengo una array de objeto-
const movieGen = [ { id: 28, name: "Action" }, { id: 12, name: "Adventure" }, { id: 16, name: "Animation" }, { id: 35, name: "Comedy" }, { id: 80, name: "Crime" }, { id: 99, name: "Documentary" }, { id: 18, name: "Drama" }, { id: 10751, name: "Family" }, { id: 14, name: "Fantasy" }, { id: 36, name: "History" }, { id: 27, name: "Horror" }, { id: 10402, name: "Music" }, { id: 9648, name: "Mystery" }, { id: 10749, name: "Romance" }, { id: 878, name: "Science Fiction" }, { id: 10770, name: "TV Movie" }, { id: 53, name: "Thriller" }, { id: 10752, name: "War" }, { id: 37, name: "Western" } ] Aquí necesito una función. Esa función debe funcionar como cuando la id coincide y luego devolver el name . Me gusta-
const gendersHandler = (id: número) => { ....//Aquí debería estar la función }
Cuando proporciono 28 como id para esta función, debería devolver Action
console.log(genresHandler(28)) output should be: Action console.log(genresHandler(12)) output should be: Adventure Por favor, ayúdame a escribir esta función en typscript o javascript .
const genresHandler = (movieId) => { const movie = movieGen.find((movie) => movie.id === movieId); return movie ? movie.name : null; } La mejor manera de recorrer las películas dentro de la matriz movieGen es usar la función de búsqueda que toma una función de devolución de llamada que compara y devuelve la primera entrada de la película que contiene una id que es la misma que se pasa a la función genresHandler ( movieId ) . El resultado de find se coloca dentro de un operador ternario que devuelve el name de la película si se ha encontrado (está definida), o null si no se ha encontrado.
Use find para ubicar el objeto con la id coincidente y devuelva el valor del name .
el ? se refiere a una característica relativamente nueva en JavaScript llamada encadenamiento opcional . Básicamente significa que si se encuentra el objeto, devuelve el nombre; de lo contrario, devuelve un mensaje predeterminado.
const arr=[{id:28,name:"Action"},{id:12,name:"Adventure"},{id:16,name:"Animation"},{id:35,name:"Comedy"},{id:80,name:"Crime"},{id:99,name:"Documentary"},{id:18,name:"Drama"},{id:10751,name:"Family"},{id:14,name:"Fantasy"},{id:36,name:"History"},{id:27,name:"Horror"},{id:10402,name:"Music"},{id:9648,name:"Mystery"},{id:10749,name:"Romance"},{id:878,name:"Science Fiction"},{id:10770,name:"TV Movie"},{id:53,name:"Thriller"},{id:10752,name:"War"},{id:37,name:"Western"}]; function getGenre(arr, id) { return arr.find(movie => { return movie.id === id; })?.name || 'No genre found'; } console.log(getGenre(arr, 28)); console.log(getGenre(arr, 12)); console.log(getGenre(arr, 1)); Si quisiera ser elegante, podría pasar una serie de ID y obtener todos los géneros. filter los objetos en los que la matriz de ids contiene la identificación de la película (devuelve una matriz de objetos de la película) y luego map para devolver solo los nombres de esos objetos.
const arr=[{id:28,name:"Action"},{id:12,name:"Adventure"},{id:16,name:"Animation"},{id:35,name:"Comedy"},{id:80,name:"Crime"},{id:99,name:"Documentary"},{id:18,name:"Drama"},{id:10751,name:"Family"},{id:14,name:"Fantasy"},{id:36,name:"History"},{id:27,name:"Horror"},{id:10402,name:"Music"},{id:9648,name:"Mystery"},{id:10749,name:"Romance"},{id:878,name:"Science Fiction"},{id:10770,name:"TV Movie"},{id:53,name:"Thriller"},{id:10752,name:"War"},{id:37,name:"Western"}]; function getGenre(arr, ids) { return arr .filter(movie => ids.includes(movie.id)) .map(movie => movie.name); } console.log(getGenre(arr, [28, 12, 9648, 1]));en JavaScript:
const movieGen = [ { id: 28, name: "Action" }, { id: 12, name: "Adventure" }, { id: 16, name: "Animation" }, { id: 35, name: "Comedy" }, { id: 80, name: "Crime" }, { id: 99, name: "Documentary" }, { id: 18, name: "Drama" }, { id: 10751, name: "Family" }, { id: 14, name: "Fantasy" }, { id: 36, name: "History" }, { id: 27, name: "Horror" }, { id: 10402, name: "Music" }, { id: 9648, name: "Mystery" }, { id: 10749, name: "Romance" }, { id: 878, name: "Science Fiction" }, { id: 10770, name: "TV Movie" }, { id: 53, name: "Thriller" }, { id: 10752, name: "War" }, { id: 37, name: "Western" } ]; function test(id) { const res = movieGen.filter(el => el.id == id); console.log(res[0].name); } test(28);