es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Contando la cantidad de veces que un valor aparece en un array usando .forEach()

Estoy tratando de contar el número de oraciones en una matriz utilizando el iterador .forEach en un array. Cada vez que haya un punto (.) o un signo de exclamación (!), debería incrementarse un contador en 1. Me preguntaba si era posible hacer esto usando un iterador de Javascript.

El array por el que estoy filtrando se llama betterWords.

El siguiente código devuelve 0 por alguna razón y no estoy seguro/a de por qué.

let sentences = 0;
betterWords.forEach(word => {
  if (word === '.' || word === '!') {
     return sentences+=1
  }
});
console.log(sentences)
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Hay un par de problemas con el código que proporcionaste.

    Primero, el iterador .forEach() no es la mejor opción para esta tarea, porque no te permite devolver un valor desde el bucle. En su lugar, deberías usar el iterador .reduce(), que te permite acumular un único valor (en este caso, el número de oraciones) de cada elemento de un array.

    Segundo, tu código actual está comprobando si cada elemento del array betterWords es igual a un punto o a un signo de exclamación, lo cual nunca será verdadero. En su lugar, deberías comprobar si cada elemento incluye un punto o un signo de exclamación utilizando el método includes().

    Aquí tienes el código corregido:

    let sentences = betterWords.reduce((count, word) => {
      if (word.includes('.') || word.includes('!')) {
        return count + 1;
      } else {
        return count;
      }
    }, 0);
    
    console.log(sentences);
    

    Este código utiliza el iterador .reduce() para acumular el conteo de oraciones. La función de devolución de llamada toma dos argumentos, count (el conteo actual de oraciones) y word (el elemento actual del array betterWords que se está procesando). Si word incluye un punto o un signo de exclamación, la función de devolución de llamada devuelve count + 1, lo que incrementa el conteo de oraciones en 1. Si word no incluye un punto o un signo de exclamación, la función de devolución de llamada devuelve count, lo que no cambia el conteo de oraciones.

    El valor inicial de la variable count es 0 y el valor final se devuelve cuando se completa la iteración. Por último, el conteo de oraciones se registra en la consola.

Comments are closed.