在javascript(netsuite)中对项目进行分组

在javascript(netsuite)中对项目进行分组,javascript,arrays,grouping,netsuite,Javascript,Arrays,Grouping,Netsuite,我想将销售订单中相同名称的项目分组,并将价格金额合并到报告中 例如。 销售订单 Item A 100usd Item A 100usd Item A 100usd Item A 100usd 在报告中,我想汇总所有项目的总价,并将项目A显示为一行: A项400美元 我知道我应该使用for循环和数组来实现这一点,但是它似乎不起作用 //scan through all lines for(i=1;...){ item[i]=getitemforline(i); itemprice[i]=

我想将销售订单中相同名称的项目分组,并将价格金额合并到报告中

例如。 销售订单

Item A 100usd 
Item A 100usd 
Item A 100usd 
Item A 100usd
在报告中,我想汇总所有项目的总价,并将项目A显示为一行: A项400美元

我知道我应该使用for循环和数组来实现这一点,但是它似乎不起作用

//scan through all lines
for(i=1;...){
item[i]=getitemforline(i);

itemprice[i]=getitempriceforline(i);

}
//check current line one by one for any duplicates, and sum up itemprice if there is
for(k=1;...){
      for(i=1;i<k;i++){ 
      currentitem[k] = getitemforcurrentline(k);
      currentitemprice[k] = getitempriceforcurrentline(k);
       if(currentitem[k] == item[i]){
       itemprice[i] = itemprice[i] + currentitemprice[k];
       }
      }
 print(itemw[i]+itemprice[i]);
}
//扫描所有行
对于(i=1;…){
项目[i]=getitemforline(i);
itemprice[i]=getitempriceforline(i);
}
//逐个检查当前行是否有重复项,如果有,则汇总itemprice
对于(k=1;…){

for(i=1;i您的for循环不正确

对于(i=1;i
对于上述用例使用以下方法:
var getLineItemAggregateResult=函数(salesOrderId){
如果(!salesOrderId){
返回;
}
var salesforder=nlapiLoadRecord('salesforder',salesforderid);
var lineItemCount=salesforder.getLineItemCount('item');
/*-----------------------------------------------------------------------------------------------------------------------
“lineItem_TotalValue”这是一个对象,它将包含作为键的lineItem和作为值的total amount
e、 g.:{项目1:400,
项目2:500}
因为这将创建一个JSON对象,所以您可以使用它来显示最终结果。
-------------------------------------------------------------------------------------------------------------------------*/
var lineItem_TotalValue={};

对于(var i=1;i)这相当模糊-数据当前在什么结构中?getitemforline()和其他函数返回什么?数据结构是NetSuite DB表格格式。Getlineforitem(i,price)返回特定行的值。函数名仅为伪代码,不表示确切的函数名。
Use below method for above use case:

var getLineItemAggregateResult = function(salesOrderId) {
    if(!salesOrderId) {
        return;
    }

    var salesOrder = nlapiLoadRecord('salesorder', salesOrderId); 
    var lineItemCount = salesOrder.getLineItemCount('item');

    /*-----------------------------------------------------------------------------------------------------------------------
    "lineItem_TotalValue" this is an object, it will contain lineitem as a key and total amount as a value
    e.g.: {item1 : 400,
          item2 : 500}
          As this will a JSON object so you can use this to display your final result.
    -------------------------------------------------------------------------------------------------------------------------*/
    var lineItem_TotalValue = {};
    for(var i = 1; i <= lineItemCount; i++) {
        if (!lineItem_TotalValue[salesOrder.getLineItemValue('item', 'item', i)]) {
            lineItem_TotalValue[salesOrder.getLineItemValue('item', 'item', i)] = parseInt(salesOrder.getLineItemValue('item', 'amount', i), 10);
        }
        else {
            lineItem_TotalValue[salesOrder.getLineItemValue('item', 'item', i)] += parseInt(salesOrder.getLineItemValue('item', 'amount', i), 10);
        }
    }

    return lineItem_TotalValue;
}