Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

170
Visualizações
¿Cómo mejorar la complejidad temporal de este fragmento?

Estoy tratando de mejorar la complejidad del tiempo y la calidad del fragmento de código a continuación. Estoy iterando a través de una matriz para verificar si el elemento de esta matriz existe en el objeto, si esto fuera cierto, debería devolver el nombre que coincide con la identificación del elemento en el objeto. ¿Cómo puedo hacer esto sin tener un bucle anidado? ¿Alguien puede decirme qué puedo hacer para mejorar este algo, por favor?

Gracias a todos de antemano.

 let genres = [28, 12, 878]; data = { genres: [ { 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', }, ], }; const getGenreName = () => { let result = []; for (let genre of data.genres) { //console.log("genre", genre.name) for (let id of genres) { //console.log('id',genres[i]) if (id === genre.id) result.push(genre.name); } } console.log(result); }; getGenreName();
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Puede usar reduce e includes como otros ya han mostrado. Esto hará que el código sea un poco más limpio, pero no cambiará la complejidad general del tiempo de ejecución. Para mejorar la complejidad del tiempo de ejecución, es posible que deba usar una estructura de datos diferente.

Por ejemplo en lugar de

 let genres = [1,2,3,4];

como una matriz simple, podría usar un Set , que tiene un mejor rendimiento de búsqueda.

 let genres = new Set([1,2,3,4]);

Entonces puedes usar esto de la siguiente manera

 let result = data.genres .filter(g => genres.has(g.id)) .map(g => g.name);

y no necesitará ningún explícito for bucles

about 4 years ago · Juan Pablo Isaza Relatório

0

La mejora más simple probablemente sería convertir genres en un Conjunto https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set y usar el método has para verificar si cada ID en los datos es un miembro del conjunto de géneros escogidos.

También puede convertir los datos en un mapa con los id como claves para buscar rápidamente por id en lugar de hacer un bucle, pero eso solo es más rápido si los datos se reutilizan muchas veces.

about 4 years ago · Juan Pablo Isaza Relatório

0

JavaScript #reduce en el ejemplo descrito a continuación tendría una complejidad de tiempo O(n). Esto solo recorre la matriz una vez. Podríamos usar el filtro y el mapa, pero tendríamos que recorrer la matriz dos veces.

 const getGenreName = () => { const genreSet = new Set(genres); return data.genres.reduce((accumulator, { id, name }) => { if (genreSet.has(id)) accumulator.push(name); return accumulator; }, []); }; console.log(getGenreName()); // [ 'Action', 'Adventure', 'Science Fiction' ]

Estamos inicializando el reductor para comenzar con la matriz [] , o una matriz vacía, y luego verificando si la propiedad de genre del objeto está incluida en la matriz de genres , si no lo está, devuelva el acumulador, si lo está. , agréguelo al final del acumulador y devuélvalo.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda