如何在SuiteScript自定义搜索返回的数组中替换指定值?
在SuiteScript中处理搜索结果数组:当lastinv为空时替换对应值为0
需求说明
需要实现:当字段lastinv(代码中对应变量a)为空时,将search.create返回的结果数组中,对应位置的custrecord_ew_meterreading_value字段值替换为0。
现有代码问题分析
你当前的代码分为两部分:
- 当
a(lastinv)为空时执行搜索并将结果存入ar_reading,但未在这一步处理值的替换 - 后续循环构建
ar_mtrdata时尝试判断替换,但存在两个潜在问题:- 空值判断冗余,可简化
- 未明确
firstReading与ar_reading的关联逻辑,可能导致索引不匹配
修正后的实现方案
方案1:在搜索结果获取时直接处理替换
在each回调中直接处理值的替换,将处理后的结果存入数组:
// a 即为 lastinv if (!a) { // 统一判断空值:覆盖null、空字符串、undefined todate = format.format({ value: todate, type: format.Type.DATE }); // 创建带特定过滤器的自定义记录搜索 var reading = search.create({ type: 'customrecord_ew_meterreading_form', columns: ['name', 'id', 'custrecord_ew_mr_metername', 'custrecordmeternumber', 'custrecord_ew_mr_site', 'custrecord1', 'custrecord_ew_meterreading_value'], filters: [{ name: 'custrecord_ew_mr_site', operator: search.Operator.IS, values: site }, { name: 'custrecord1', operator: search.Operator.ON, values: todate }] }); // 获取结果时直接替换目标字段值 reading.run().each(function(result) { // 封装处理后的结果对象,保留原方法的同时替换指定字段 var processedResult = { getValue: function(fieldId) { if (fieldId === 'custrecord_ew_meterreading_value') { return 0; } return result.getValue(fieldId); }, getText: function(fieldId) { return result.getText(fieldId); } }; ar_reading.push(processedResult); return true; }); return ar_reading; }
方案2:在构建ar_mtrdata时正确处理替换
确保firstReading是之前获取的搜索结果数组,优化空值判断并正确赋值:
// 假设firstReading为之前返回的ar_reading数组 for (var k = 0; k < firstReading.length; k++) { ar_mtrdata[k] = []; var l_meternumber = firstReading[k].getValue('custrecordmeternumber'); var mtrdtls = getMeterDetails(l_meternumber); ar_mtrdata[k][0] = mtrdtls.getValue('itemid'); // 电表编号 // 统一空值判断,同时处理目标字段本身为空的情况 if (!lastinv) { ar_mtrdata[k][2] = 0; } else { var readingValue = firstReading[k].getValue('custrecord_ew_meterreading_value'); ar_mtrdata[k][2] = readingValue || 0; // 字段为空时也默认设为0 } /* 其他业务逻辑... */ }
关键注意点
- 用
!lastinv可以统一覆盖null、undefined、空字符串三种空值场景,简化判断逻辑 - 若不需要保留原搜索结果对象的方法,方案1也可以直接提取字段值存入数组,减少封装成本
- 方案2中对
custrecord_ew_meterreading_value添加|| 0处理,可避免字段本身为空导致的异常
内容的提问来源于stack exchange,提问作者Anthony
相关产品推荐
相关产品推荐

