我试图从'重复项'输入中返回值。但'inputs.value'不起作用。我想我需要为列表中的每个项目创建一个循环和索引但不确定。
答案 0 :(得分:0)
我想我需要为列表中的每个项目创建一个循环和索引。
是。你是对的。 “重复项”在内部存储为对象数组。所以你需要迭代那个数组来处理它。单个项目是对象,因此您不会直接在inputs
对象上使用,而是通过inputs.lineitems
,其中lineitems
是重复项目原型的属性名称。
例如:
您正在创建要订购的项目的重复项目列表。因此,您在重复项原型中有两个输入,例如itemName
和itemQuantity
。您将重复项属性名称命名为LineItems
。您希望将其显示为输出表格,并显示已订购的总数量。输出表名为Orders
,总标签名为Total
。
然后您可以对此进行迭代以进一步处理它,如下所示:
var result = [], totalItems = 0;
其中result
是您要映射到输出表的数组,totalItems
是缓存总数量的位置。
inputs.LineItems.forEach(function(item, idx) {
totalItems += item.itemQuantity;
result.push({
'ItemNumber': idx + 1,
'Item': item.itemName,
'Quantity': item.itemQuantity
});
});
在哪里,您通过inputs.LineItems
迭代重复项并相应地增加total
。您还准备result
数组以便稍后映射到Orders
表。
这是你的回报:
return {
Total: totalItems,
Orders: result
};
其中,Total
是您之前定义的输出标签,Orders
是您之前定义的输出表名。
这是一个让您更好地理解它的演示:
https://jscalc.io/calc/YicDJYCSlYTGYFMS
要查看来源,只需点击省略号(在Powered by JSCalc.io'文本之后显示的三个点),然后点击“制作副本”。
希望这会有所帮助。