2013-12-11 2 views
0

Im в настоящее время работает над этим скриптом, который написан на javascript, который возвращает данные с платформы Netsuite ERP.пытается создать массив массивов для возврата JSON

Прямо сейчас у нас есть код, возвращающийся в массив, в то время как это хорошо, это результат набора данных о продукте.

Сценарий запрашивает 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)); 
} 

Любая помощь очень ценится

ответ

0

это то, что вы ищете?

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 
0

Может быть что-то вроде этого:

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()) 
     }); 
    }); 
}); 
0

Это должно решить проблему вам. Может возникнуть проблема с объявлением.

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); 
    } 
} 
Смежные вопросы