2017-08-17 81 views
0

我試圖通過加載搜索和推動的結果,一個數組來創建對象的數組:如何在NetSuite中將用戶記錄與保存的搜索進行匹配?

var searchArr = []; 

    var dfaSearch = search.load({ 
     id: 'id_of_search' 
    }); 

    var runSearch = dfaSearch.run().getRange({ 
     start: 0, 
     end: 100    
    }); 
    for (x=0; x<runSearch.length;x++) { 
     var engine = runSearch[x].getValue({ 
      name: 'id_of_department_column' 
     }) 
     var approver = runSearch[x].getValue({ 
      name: 'id_of_approver_column' 
     }); 
     var lowT = runSearch[x].getValue({ 
      name: 'id_of_lowerapproval_column' 
     }); 
     var upT = runSearch[x].getValue({ 
      name: 'id_of_upperapproval_column' 
     }); 

     var searchCriteria = { 
      engine : engine, 
      approver: approver, 
      lowT : lowT, 
      upT : upT 
     }; 

     searchArr.push(searchCriteria); 
    } 

我有一些更多的代碼將加載當前用戶的紀錄搶內部IDS等,但是,試圖與部門的靜態ID測試時,我不斷收到:

TypeError: Cannot find function find in object. 

這裏是代碼的其餘部分:

function findApprover(approverInfo) { 
    return approverInfo.engine === '26'; 
} 
var approverInfo = searchArr.find(findApprover); 
log.debug({ 
    title : 'Current User Approver ID', 
    details : approverInfo 
}); 

} 

任何HEL p非常感謝!

回答

0

find方法在ES2015中引入,不受NetSuite支持。你可以嘗試使用第三方庫像underscore其中包括ES2015方法,如find polyfills:

function findApprover(approverInfo) { 
    return approverInfo.engine === '26'; 
} 

var approverInfo = _.find(searchArr, findApprover); 

log.debug({ 
    title : 'Current User Approver ID', 
    details : approverInfo 
}); 

或尋找在以不同的方式審批,例如,使用一個for循環:

function findApprover(array, key, value) { 
    for (var i = 0; i < array.length; i++) { 
     if (array[i][key] === value) { 
      return array[i]; 
     } 
    } 
    return null; 
} 

var approverInfo = findApprover(searchArr, 'engine', '26'); 

log.debug({ 
    title : 'Current User Approver ID', 
    details : approverInfo 
}); 
+0

謝謝安德烈!我不知道如何讓下劃線庫實際工作,但第二個解決方案(for循環)完美地工作。 –

相關問題