Hola familia, feliz San Valentín. No estoy buscando una solución de código, sino algunas ideas sobre cómo podría iterar sobre una matriz, llamémosla matriz = [1, 1, 1], y no pasar al siguiente elemento de la matriz hasta que se cumpla una condición . Por ejemplo, quiero comenzar en el índice 0 y solo pasar al siguiente índice (1) después de que el valor de dicho índice sea (modificado/cambiado) para que sea mayor que el valor del índice anterior. En el índice 0 tenemos el valor 1, antes de pasar al índice 1 quiero cambiar el valor del índice 1 para que sea mayor que el valor del índice 0. Algo así si tenemos matriz = [1, 1, 1] Quiero para iterar sobre la matriz, comience en el índice 0. Compare si el valor del índice 0 es mayor o igual que el valor del índice 1 (el siguiente índice) Si es así, agregue 1 al valor del índice 1 hasta que ese valor sea mayor que el valor del índice 0. Primera iteración obtenemos matriz = [1, 2, 1]. La próxima iteración obtenemos matriz = [1, 2, 3].
En este punto, he tratado de iterar sobre la matriz con un bucle for, toma cada elemento, compara y agrega 1 al elemento, pero cuando llego al último elemento, no agrega nada, ya que estoy al final de la matriz y allí no es un elemento para recorrer. Obtengo matriz = [1, 2, 2] Por favor ayuda fam. Esto es lo que tengo hasta ahora.
// array const array = [1, 1, 1] // iterating over array for (let i = 0; i < array.length; i++) { // compare if (array[i] >= array[i + 1]) { // increase next number by 1 array[i + 1] += 1 } }Puede comenzar desde el índice 1 , porque no puede cambiar el valor en el índice 0 debido a que falta el valor anterior.
Dentro del ciclo, incremente el valor hasta que sea mayor que el valor en el último índice.
const array = [1, 1, 1] for (let i = 1; i < array.length; i++) { while (array[i] <= array[i - 1]) array[i]++; } console.log(array);Si no desea iterar para el incremento, puede actualizar el valor directamente.
const array = [1.2, 1, 1] for (let i = 1; i < array.length; i++) { if (array[i] <= array[i - 1]) array[i] = Math.floor(array[i - 1] + 1); } console.log(array);¡Feliz San Valentín!
Veamos qué puede estar causando que su matriz devuelva [1,2,2]. Una buena práctica (y un poco tediosa) es seguir sus entradas y ver elemento por elemento cómo se manipula su matriz.
Es posible que haya notado que el comportamiento no deseado ocurre en el segundo paso. Es porque está agregando 1 al valor y no incrementando según el índice en el que se encuentra.
Ahora... ¡vamos a arreglarlo!
Si asumimos que su entrada es siempre [1,1,1] ( LAS SUPOSICIONES IMPORTAN :) ), simplemente puede cambiar la matriz.
array[i + 1] += 1 to array[i+1] += array[i]Si está buscando un enfoque más completo en el que pueda tomar cualquier entrada de matriz, ordenar y mostrar una matriz incremental, ¡eso es un poco más adelante! Concéntrate en los fundamentos :)