Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

153
Vistas
Compara 2 o más números consecutivos en una matriz

Tengo una matriz: A = [ 2, 2, 0, 0, -1, 1, -1, -1, -1 ]

Quiero poder devolver verdadero en los casos en que 2 o más números consecutivos sean iguales. Entonces, en esta matriz, la matriz de salida debe tener 5 verdaderos con [2,2], [0,0], [-1,-1,-1], [-1,-1] y [-1,-1 ].

Hasta ahora, he usado slice y map en la matriz a través de 2 números consecutivos y obtuve 4 verdaderos.

 const solution = (A) => { let compare = A.slice(1).map((n,i) => { return (n === A[i]) }) console.log(compare) // => [ true, false, true, false, false, false, true, true ] } const A = [ 2, 2, 0, 0, -1, 1, -1, -1, -1 ]; solution(A);

Pero lograr que ese quinto sea verdadero en [-1,-1,-1] me está eludiendo.

Actualmente, la salida de comparación que tengo solo pasa por 2 números consecutivos, por lo que me da 4 verdaderos. Mi pregunta es básicamente cómo verificar los 3 o más números consecutivos.

Mi final sería algo como

 compare.filter(word => word === true).length

para obtener 5.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Quizás lo que realmente sería útil son los grupos :

 const findGroups = (arr) => arr.reduce((result, value, index) => { let windowLength = 2; while (arr[index + windowLength - 1] === value) { result.push(arr.slice(index, index + windowLength)); windowLength++; } return result; }, []); console.log(findGroups([2, 2, 0, 0, -1, 1, -1, -1, -1])); // [[2, 2], [0, 0], [-1, -1], [-1, -1, -1], [-1, -1]] console.log(findGroups([4, 4, 4, 4])); // [[4, 4], [4, 4, 4], [4, 4, 4, 4], [4, 4], [4, 4, 4], [4, 4]]

Eso le da una matriz de los grupos de valores consecutivos. Si solo desea 5 , es .length , o puede calcularlo directamente en lugar de crear matrices innecesarias:

 const findGroupCount = (arr) => arr.reduce((result, value, index) => { let windowLength = 2; while (arr[index + windowLength - 1] === value) { result++; windowLength++ } return result; }, 0); console.log(findGroupCount([2, 2, 0, 0, -1, 1, -1, -1, -1])); // 5 console.log(findGroupCount([4, 4, 4, 4])); // 6

about 4 years ago · Juan Pablo Isaza Denunciar

0

Comprobación de cadenas duplicadas en la matriz de JavaScript

La pregunta/respuesta anterior es un excelente lugar para comenzar. Pero explícitamente lo que quieres:

 const A = [ 2, 2, 0, 0, -1, 1, -1, -1, -1 ] let findDuplicates = arr => arr.filter((item, index) => arr.indexOf(item) != index) const solutionArray = findDuplicates(A).map((e) => true); console.log(solutionArray); // [true, true, true, true, true]

Para hacer esto consecutivamente, su código funciona como se esperaba:

[2,2] Verdadero [2,0] Falso [0,0] Verdadero [0,-1] Falso [-1,1] Falso [1,-1] Falso [-1,-1] Verdadero [-1 ,-1] Verdadero

Esas son las comparaciones en orden comparando 2 números consecutivos. La quinta verdad que esperas es comparar 3 números consecutivos.

¿Está pidiendo una solución que también compare (n) número de números consecutivos?

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda