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

147
Vistas
Obtenga un valor de una matriz y agréguelo a los elementos restantes de ambos Array en JS

Digamos que tengo las siguientes 2 matrices:

 let a = [5,5,5,5,0] let b = [5,5,5,5,0]

Suponiendo que ambas matrices tienen la misma longitud:

Quiero obtener un valor de un elemento de una matriz y agregar el +1 a sí mismo y a otros elementos restantes. Si el valor seleccionado sigue siendo mayor que cero, también debe continuar agregándolo a los elementos de otra matriz desde el índice inicial.

Ejemplo_1: si elijo a[2] , el resultado debería ser:

 a = [5,5,1,6,1] // a[2] became 0 after picking 5, then in each remaining element we add +1 and continue to next array. b = [6,6,5,5,0]

Example_2: O si elijo b[3] de las matrices iniciales, entonces el resultado debería ser:

 a = [6,6,6,5,0] // b[3] became 0 after picking 5, then in each remaining element we add +1 and move to next array until our value becomes zero b = [5,5,5,1,1]

Aquí está mi intento:

 let pickedValue = a[2] for (let index = 2; index < a.length; index++) { if (pickedValue > 0) { a[index] += 1 pickedValue-- } } for (let index = 0; index < pickedValue; index++) { if (pickedValue > 0) { b[index] += 1 pickedValue-- } }

¿Podemos hacer esto de una manera más dinámica con tal vez un ciclo?

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

0

Puede tomar un objeto con las propiedades de matrices con el mismo nombre y entregar la clave y el índice de destino y luego actualizar hasta que no haya más valor para dispersar.

 const update = (source, target, index) => { const keys = Object.keys(source); let value = source[target][index]; source[target][index] = 0; while (value--) { source[target][index++]++; if (index === source[target].length) { index = 0; target = keys[(keys.indexOf(target) + 1) % keys.length]; } } return source; }; console.log(update({ a: [5, 5, 5, 5, 0], b: [5, 5, 5, 5, 0] }, 'a', 2)); console.log(update({ a: [5, 5, 5, 5, 0], b: [5, 5, 5, 5, 0] }, 'b', 3));
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Denunciar

0

Solo necesita iterar a través de ambas matrices. La matriz elegida debe iterarse desde el target + 1 hasta su longitud, y la otra matriz, desde 0 hasta el target . Puede ver que coloco directamente un 1 en la matriz elegida en el target del índice, en lugar de poner un 0 y agregar +1.

(También use algunas expresiones regulares para capturar el número entre paréntesis, de esta respuesta SO )

 let a = [5,5,5,5,0] let b = [5,5,5,5,0] const ans = prompt("Pick an element (eg `a[2]` or `b[3]`)"); const [chosenArray, otherArray] = ans[0] === 'a' ? [a, b] : [b, a]; const target = parseInt(ans.match(/(?<=\[).+?(?=\])/), 10); chosenArray[target] = 1; for (let i = target + 1; i < chosenArray.length; ++i) ++chosenArray[i]; for (let i = 0; i < target; ++i) ++otherArray[i]; console.log(a, b)

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