【问题标题】:trying to create an array of arrays for return JSON试图创建一个数组数组以返回 JSON
【发布时间】:2023-03-29 19:41:01
【问题描述】:

我目前正在处理这个用 javascript 编写的脚本,它从 netsuite ERP 平台返回数据。

现在我们有返回数组的代码,虽然这很好,但它是产品信息数据集的结果。

该脚本正在查询 3 个产品,因此它返回一个包含 21 个键的数组。 这应该返回 3 个数组数组,以便我们可以轻松地在 Netsuite 外部处理内容。

我一生都无法弄清楚我需要哪个循环来创建一个新数组来管理内容。

function loadRecord(request, response)
{
    var recType = request.getParameter('recType');
    var savedSearchId = request.getParameter('savedSearchId');
    var internalid = request.getParameter('internalid');
    //perform the required search.

    var filter = [];

    if(recType == 'customer' || recType == 'contact' )
    {
        filter[0] = new nlobjSearchFilter('internalid', null, 'is', internalid); // just get the 1 item by the internal id of the record
    }

    if( recType == 'item')
    {
        var internal_ids = new Array();
         internal_ids[0] = 25880;
         internal_ids[1] = 25980;
         internal_ids[2] = 333 ;
        filter[0] = new nlobjSearchFilter('internalid', null, 'anyOf', internal_ids); // just get the 1 item by the internal id of the record       
    }


    if(recType == 'transaction')
    {       
        filter[0] = new nlobjSearchFilter('type',null,'anyOf','SalesOrd');
        filter[1] = new nlobjSearchFilter('internalid','customer','is', internalid );
    }


    var rsResults = nlapiSearchRecord(recType, savedSearchId, filter);
    var rsObj = [];



     // not sure how to make each row a new array of arrays so it is structured more elegantly...
    for (x = 0; x < rsResults.length; x++)
    {
        var flds = rsResults[x].getAllColumns();

        for (i = 0; i < flds.length; i++)
        {

            var rowObj = {};
            rowObj.name = flds[i].getName();
            rowObj.label = flds[i].getLabel();
            rowObj.val = rsResults[x].getValue(flds[i].getName(), flds[i].getJoin(), flds[i].getSummary());
            rowObj.txtval = rsResults[x].getText(flds[i].getName(), flds[i].getJoin(), flds[i].getSummary())            
            rsObj.push(rowObj);
        }
    }
    response.write(JSON.stringify(rsObj));
}

非常感谢任何帮助

【问题讨论】:

    标签: javascript arrays json loops stringify


    【解决方案1】:

    这是你要找的吗?

    var rsObj = [];
    var rowArr, fields, x, i;
    
    for (x = 0; x < rsResults.length; x++)
    {
        flds = rsResults[x].getAllColumns();
    
        for (i = 0; i < flds.length; i++)
        {
    
            rowArr = rsObj[x] = [];
            rowArr.push(flds[i].getName());
            rowArr.push(flds[i].getLabel());
            rowArr.push(rsResults[x].getValue(flds[i].getName(), flds[i].getJoin(), flds[i].getSummary()));
            rowArr.push(rsResults[x].getText(flds[i].getName(), flds[i].getJoin(), flds[i].getSummary()));
        }
    }
    
    console.log(rsObj[0][0]); // row0.name
    console.log(rsObj[2][1]); // row2.label
    

    【讨论】:

      【解决方案2】:

      可能是这样的:

      for (var x = 0; x < rsResults.length; x++)
      {
          var flds = rsResults[x].getAllColumns();
      
          for (var i = 0; i < flds.length; i++)
          {
              rsObj.push({
                  name: flds[i].getName(),
                  label: flds[i].getLabel(),
                  val: rsResults[x].getValue(flds[i].getName(), flds[i].getJoin(), flds[i].getSummary()),
                  txtval: rsResults[x].getText(flds[i].getName(), flds[i].getJoin(), flds[i].getSummary())
              });
          }
      }
      

      如果您使用 ECMAScript5,您可以使用 forEach 冷简化循环,如下所示:

      rsResults.forEach(function(result) {
          result.getAllColumns().forEach(function(fields) {
              rsObj.push({
                  name: fields.getName(),
                  label: fields.getLabel(),
                  val: result.getValue(fields.getName(), fields.getJoin(), fields.getSummary()),
                  txtval: result.getText(fields.getName(), fields.getJoin(), fields.getSummary())
              });
          });
      });
      

      【讨论】:

        【解决方案3】:

        这一定能解决你的问题。可能存在一些声明问题。

        var rsObj = [];
        
        for (int x = 0; x < rsResults.length; x++)
        {
            var flds = rsResults[x].getAllColumns();
        
            for (int i = 0; i < flds.length; i++)
            {
        
                var rowObj = [];
                rowObj.push(flds[i].getName());
                rowObj.push(flds[i].getLabel());
                rowObj.push(rsResults[x].getValue(flds[i].getName(), flds[i].getJoin(), flds[i].getSummary()));
                rowObj.push(rsResults[x].getText(flds[i].getName(), flds[i].getJoin(), flds[i].getSummary()));            
        
                rsObj.push(rowObj);
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-03-10
          • 2016-04-05
          • 2012-09-26
          • 2016-09-10
          • 2013-06-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多