Estoy tratando de crear una función que cree grupos y asigne una cantidad por grupo, según la entrada del usuario.
Por ejemplo:
// Input User input: 150 // Rule Maximum quantity per group: 100 // Created groups Group 1: { quantity: 100 } Group 2: { quantity: 50 }Meta
Este es mi resultado deseado:
[{ quantity: 100 }, { quantity: 50 }]
lo que he probado
function group(input, maximum) { let arr = (new Array(Math.floor(input / maximum))).fill(maximum); input % maximum && arr.push(input % maximum); console.log(arr); } group(150, 100);Producción
Esto me devolverá: [100, 50] .
Ahora intenté implementar esto para generarme un objeto:
function group(input, maximum) { let arr = (new Array({quantity: Math.floor(input / maximum)})).fill(maximum); input % maximum && arr.push({quantity: input % maximum}); console.log(arr); } group(150, 100);Producción
Esto me devuelve: [100, { "quantity": 50 }] .
la quantity solo se agrega al segundo elemento, pero no al primero.
Pregunta
¿Cómo puedo arreglar esto, para que todos los elementos de la matriz sean un objeto?
Como se señala en el comentario, la pregunta está muy cerca del objetivo deseado.
Aquí hay una forma posible de lograr la estructura de destino deseada.
function group(input, maximum) { let arr = (new Array(Math.floor(input / maximum))).fill(maximum); input % maximum && arr.push(input % maximum); // instead of using "arr", simply transform it // by putting the number as an object with prop-name "quantity" console.log(arr.map(quantity => ({ quantity }))); } group(150, 100);Explicación agregada como comentarios en línea en el fragmento anterior.