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

150
Vistas
Cuente las ocurrencias de un objeto en una fila antes de presionar una tecla determinada en Javascript

Tengo una matriz de matrices que se ve así:

 var grid = [ [0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0], [0,0,0,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,1,1,0,0,0,0,0] ];

Quiero contar el número de 1 seguidos hasta llegar a un cero. Y luego, si llegamos a un 1 nuevamente, contamos las ocurrencias secuenciales nuevamente.

 So for grid[0], it should return 9. For grid[1], it should return [3,3]. grid[2], [2,1,1,2].

Como una capa adicional de diversión, también intento hacer esto para las "columnas". Es decir, cuántas veces aparece "1" en la primera columna, que consistiría en grid[0][1], grid[1][1], grid[2][1] y así sucesivamente. Si hay una mejor manera de organizar los datos para lograr esto, estoy abierto a sugerencias ya que en total tengo 25 filas/matrices dentro de la matriz.

No estoy seguro de si hay una manera que no implique recorrer los datos una y otra vez. Actualmente estoy haciendo esto:

 var guides = []; for ( var i = 0; i < grid.length; i++ ) { var row = grid[i]; var chunks = []; var count = 0; for (var j = 0; j < row.length; j++ ) { if ( j === 1 ) { count++; } else { chunks.push(count); count = 0; } } guides.push(chunks); }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Aquí hay un ejemplo de cómo puede usar la recursividad para verificar esas huelgas número 1. Para las columnas, puede transponer la Cuadrícula original y reutilizar la misma función.

 var grid = [ [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0], ] // Returns the array of 1 strikes in the given arr const occurrenceOfOne = (arr, strike = 0, final = []) => { // Recursive calls until the array is empty if (arr.length === 0) { return strike === 0 ? final : final.concat([strike]) } // If the item is 0, the strike ends. if (arr[0] === 0) { if (strike !== 0) { return occurrenceOfOne(arr.slice(1), 0, final.concat([strike])) } } // If the item is 1, the strike continues if (arr[0] === 1) { return occurrenceOfOne(arr.slice(1), strike + 1, final) } // Default value 0 found and strike is 0 as well. return occurrenceOfOne(arr.slice(1), 0, final) } // Copied transpose function from this gist: // https://gist.github.com/femto113/1784503 function transpose(a) { return a[0].map((_, c) => a.map((r) => r[c])) } console.log(occurrenceOfOne(grid[0])) console.log(occurrenceOfOne(grid[1])) console.log(occurrenceOfOne(grid[2])) const transposedGrid = transpose(grid) console.log(occurrenceOfOne(transposedGrid[6])) console.log(occurrenceOfOne(transposedGrid[7]))

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