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

146
Visualizações
Recorrer una matriz de objetos solo devuelve un objeto de elementos en lugar de dos. ¿Qué estoy haciendo mal?

Advertencia: soy nuevo en la codificación, así que tenga paciencia conmigo.

Estoy tratando de recorrer la matriz "diario" y la función "cuántos" solo devuelve 2 elementos 'Inicio', cuando hay 4 elementos de 'Inicio' en general en la matriz "diario".

Código en cuestión

¿Qué estoy haciendo mal? Gracias. :)

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Está utilizando el método includes que solo devuelve el valor booleano. Si coincide, incluso si tiene 4 coincidencias, el number solo se incrementará en 1 por cada ciclo.

Esta es otra forma de lograrlo usando filter .

 let diary = []; const addEntry = (events) => { diary.push({ events }); }; addEntry(['Home', 'Work', 'Park', 'Beach', 'Home']); addEntry(['Work', 'Home', 'Store', 'Gas Station', 'Home']); const howMany = (event, journal) => { let number = 0; for (let i = 0; i < journal.length; i++) { let entry = journal[i]; number += entry.events.filter((e) => e === event).length; } console.log(`You did that ${number} time(s)`); }; howMany('Home', diary); console.log(diary);

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter


Actualización: Uso de reduce y filter .

 let diary = []; const addEntry = (events) => { diary.push({ events }); }; addEntry(['Home', 'Work', 'Park', 'Beach', 'Home']); addEntry(['Work', 'Home', 'Store', 'Gas Station', 'Home']); const howMany = (event, journal) => journal.reduce( (acc, curr) => acc + curr.events.filter((e) => e === event).length, 0 ); const number = howMany('Home', diary); console.log(`You did that ${number} time(s)`); console.log(diary);
about 4 years ago · Juan Pablo Isaza Relatório

0

lo siento por la respuesta anterior, no revisé el código, este es el correcto

 let diary = []; const addEntry = (event) => { diary.push(event); }; addEntry(['Home', 'Work', 'Park', 'Beach', 'Home']); addEntry(['Work', 'Home', 'Store', 'Gas Station', 'Home']); const howMany = (event, journal) => { let number = 0; for (let i = 0; i < journal.length; i++) { for(let j =0;j < journal.length;j++) { const entries = journal[i][j] if(event.includes(event)){ number++ } } } console.log(`You did that ${number} time(s)`); }; howMany('Home', diary); console.log(diary);

about 4 years ago · Juan Pablo Isaza Relatório

0

La razón por la que devuelve solo dos es porque el método includes() no contará cuántas veces ocurre, sino que solo devuelve valores booleanos. Y su código solo cuenta cuántas declaraciones true se producen. En su caso, debido a que la longitud de la matriz es 2 y cada elemento tiene 'Inicio', su código solo devuelve 2.

Hay varias formas de lograr lo que desea, pero lo que hago a continuación es usar múltiples foreach (o también puede usar for loop) como verificar la matriz 2d.

 let diary = [] const addEntry = events =>{ diary.push({events}) } addEntry(['Home', 'Work', 'Park', 'Beach', 'Home']) addEntry(['Work', 'Home', 'Store', 'Gas Station', 'Home']) const howMany = (event, journal) => { let number = 0; journal.forEach(element => { element.events.forEach(item => { if (item === event) { number++ } }) }); console.log(`You did that ${number} time(s)`); } howMany('Home', diary) console.log(diary)

* Lo siento si mi inglés es bastante malo.

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