Digamos que PackInput es una entrada de matriz.
Lo que me gustaría hacer es return una cantidad dinámica de objetos según el tamaño de la matriz de entrada PackInput .
Por ejemplo: si PackInput es [4,5,6] , me gustaría que se devolvieran tres objetos para cada ItemID .
Por ejemplo: return {... ItemID: 4 ...} , return {... ItemID: 5 ...} , return {... ItemID: 6 ...} .
Mi código actual a continuación solo toma el primer elemento de la matriz en lugar de todos y no estoy seguro de por qué. He girado mis ruedas en esto durante tanto tiempo y ahora me he topado con una pared. ¿Qué estoy haciendo mal?
for(let i = 0; i < PackInput.length; i++) { return { TimestampUTC: Date.now(), Payload: { ItemID : PackInput[i] } } }Actualizado:
let array = PackInput.map((items) => ({ TimestampUTC: Date.now(), Payload: { ItemID : items } }) ); let objects = array.reduce(function(target, key, index) { target[index] = key; return target; }) return objects;Puedes usar el método del mapa para lograr lo que quieres
return PackInput.map((element) => ({ TimestampUTC: Date.now(), Payload: { ItemID : element } }))Una declaración de retorno finaliza la ejecución de una función y devuelve el control a la función de llamada/alcance superior.
Actualización sobre el objeto:
const object = PackInput.reduce(function(previousValue, currentValue, index) { return { ...previousValue, [index]: currentValue } }, {})Debe proporcionar un objeto vacío como segundo argumento para la función de reducción.
Puede devolver una matriz/objeto. El problema es que puede llamar a return solo una vez en una función y, tan pronto como una función llegue a return , se devolverá al alcance de la persona que llama. Puede usar el ciclo para crear la matriz/objeto y luego devolver el valor final:
let array = []; for(let i = 0; i < PackInput.length; i++) { array.push({ TimestampUTC: Date.now(), Payload: { ItemID : PackInput[i] } }); } return array;