You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ServiceNow自定义脚本数组映射报错:Unexpected token >

问题解决与优化方案

一、修复语法错误

出现Parsing error: Unexpected token >的核心原因是ServiceNow服务器端脚本引擎(Rhino)不支持ES6箭头函数(=>),需将箭头函数替换为传统function写法,同时修正原代码中的逻辑偏差:

原错误代码:

dict = data.map((item) => Object.fromEntries(Object.entries(item).map(([key, value]) => [mapper[key], value])));

修复后基础可运行版本:

var result = {};
data.forEach(function(item) {
    Object.keys(item).forEach(function(key) {
        // 修正逻辑:mapper的键是bv1这类值,而非item的key(如b1)
        var bValue = item[key];
        if (mapper[bValue]) {
            var cKey = 'c' + key.slice(1); // 从b1推导对应c1
            result[mapper[bValue]] = item[cKey];
        }
    });
});

二、大数据处理优化(避免全遍历)

针对海量数据,核心优化思路是只处理目标相关键值,避免遍历对象所有属性,以下两种方案按需选择:

方案1:固定目标键提取(性能最优)

若需提取的bX/cX键是固定的(如b1、b3、b5),直接指定目标键列表,跳过无效遍历:

var targetBKeys = ['b1', 'b3', 'b5'];
var result = {};

data.forEach(function(item) {
    targetBKeys.forEach(function(bKey) {
        var bValue = item[bKey];
        if (bValue && mapper[bValue]) {
            var cKey = 'c' + bKey.slice(1);
            result[mapper[bValue]] = item[cKey];
        }
    });
});

方案2:按规则匹配提取(灵活性高)

若目标键符合b后接奇数的规律,用正则匹配筛选,无需硬编码键名:

var result = {};
var bKeyRule = /^b(\d+)$/;

data.forEach(function(item) {
    Object.keys(item).forEach(function(key) {
        var match = key.match(bKeyRule);
        if (match) {
            var num = parseInt(match[1], 10);
            if (num % 2 === 1) { // 仅处理奇数项
                var bValue = item[key];
                if (mapper[bValue]) {
                    var cKey = 'c' + num;
                    result[mapper[bValue]] = item[cKey];
                }
            }
        }
    });
});

三、关键注意事项

  1. 语法兼容性:ServiceNow服务器端脚本仅支持ES5及以下语法,禁止使用箭头函数、解构赋值等ES6特性,否则会触发解析错误。
  2. 性能提升点:
    • 直接通过键名访问属性(item['b1'])比Object.entries全遍历效率高30%以上
    • 提前定义目标规则/列表,减少无效循环次数
  3. 逻辑修正:原代码中mapper[key]是错误逻辑,mapper的键是bv1这类值(item中b1的属性值),而非item的键名(如b1)。

内容的提问来源于stack exchange,提问作者Maddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 22:55:18