我如何能够 return 基于用户输入数量的多个对象

How would I be able to return more than one object based on user input amount

假设 PackInput 是数组输入。

我想做的是 return 对象的动态数量,具体取决于输入数组 PackInput 的大小。

例如:如果 PackInput[4,5,6],那么我想为每个 ItemID.

返回三个对象

例如:return {... ItemID: 4 ...}, return {... ItemID: 5 ...}, return {... ItemID: 6 ...}.

我下面的当前代码只获取数组的第一项而不是所有项,我不确定为什么。我已经在这上面转动了很长时间,现在我碰壁了。我做错了什么?

for(let i = 0; i < PackInput.length; i++) {      
        return {
            TimestampUTC: Date.now(),
            Payload: {
                ItemID : PackInput[i]
            }
        }
} 

已更新:

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;

您可以 return 一个 array/object。问题是您只能在函数中调用 return 一次,一旦函数达到 return ,它将 returned 到来电者范围。您可以使用循环创建 array/object 然后 return 最终值:

let array = [];
for(let i = 0; i < PackInput.length; i++) {      
        array.push({
            TimestampUTC: Date.now(),
            Payload: {
                ItemID : PackInput[i]
            }
        });
} 

return array;

你可以使用map的方法来实现你想要的

return PackInput.map((element) => ({
  TimestampUTC: Date.now(),
  Payload: {
    ItemID : element
  }
}))

return 语句结束函数的执行,return 控制调用 function/upper 作用域。

对象更新:

const object = PackInput.reduce(function(previousValue, currentValue, index) {
    return {
      ...previousValue,
      [index]: currentValue
    }
}, {})

您需要提供一个空对象作为 reduce 函数的第二个参数。