Actualmente estoy trabajando en un problema que requiere que obtenga un cierto número con una matriz 3d determinada. Esa matriz contiene matrices 2D que contienen un número x cantidad de tiempo. Matriz principal ordenada de mayor a menor.
Ejemplo de matriz principal;
array = [ [5, 5, 5, 5, 5, 5], [4, 4, 4], [3, 3, 3, 3], [1, 1, 1, 1, 1, 1, 1], ];y el número que quiero obtener es 27;
let number = 0; for (let i = 0; i < array.length; i++){ for (let j = 0; j < array[i].length; j++){ number += array[i][j] } }El ciclo for anterior obviamente suma todos los números en la matriz principal, pero quiero que se salte el ciclo cuando el número pasa el 27 y finalmente se rompe cuando es 27.
Para el ejemplo anterior, en el primer ciclo, debe ejecutarse hasta que el número sea 25 y pasar al segundo ciclo; el segundo y tercer bucle se saltan porque el número debe ser igual a 27; y finalmente, el bucle se interrumpe en la segunda ejecución del cuarto bucle cuando el número es 27;
Lo siento por esta explicación larga e inflada, mi conocimiento de js es limitado, tengo que tratar de explicarlo con palabras.
var target = 27; // Or whatever let number = 0; let helpers = [] for (let i = 0; number < target && i < array.length; i++){ helper = [] for (let j = 0; number < target && j < array[i].length; j++){ if ( number + array[i][j] <= target ) { helper.push(array[i][j]) if ( ( number += array[i][j] ) == target ) { helpers.push(helper) helper = [] console.log( `Found target ${target} at i=${i}, j=${j}` ); break; } } } if (helper.length) { helpers.push(helper) } } console.log(helpers)