Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

153
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!