TypeError:无法调用null的方法“ indexOf”

时间:2019-04-22 20:51:46

标签: javascript pentaho indexof pentaho-spoon pentaho-data-integration

我正在尝试从CSV文件的“ RESUMEN”字段中查找包含“ SO-”或“ NS-SO”或“ SO –”或“ SWAT”的记录,以分配新的类别(在此案例将是“呼叫中心”)。因此,我使用“ indexOf”功能巫婆效果很好。

当我更改数据源(也是CSV)时,问题就来了,这给了我该步骤的下一个错误: “原因:org.mozilla.javascript.EcmaError:TypeError:无法调用null的方法“ indexOf”(脚本#2)”

目标是通过识别源文件中的单词来分配类别

我的代码

if (RESUMEN.indexOf("SO -")!=-1 || RESUMEN.indexOf("NS - SO")!=-1 || RESUMEN.indexOf("SO –" )!=-1 || RESUMEN.indexOf("SWAT")!=-1)
{
var RESULTADO = "Call Center"
}
else RESULTADO = ""

我希望像第一个文件一样分配呼叫中心类别(我什么都没做)

致谢!

2 个答案:

答案 0 :(得分:0)

您使问题复杂化了。

在回答之前,请记住一些内容,其中包含几个步骤以及这些步骤的组合,它们实现了令人难以置信的大量转换以形成可用的模式,这是最后一种手段是IS用户定义的Java表达式。

好像您要实现的是价值映射,您与案例中的直接价值映射的区别在于,您要测试的行必须包含“ SO-”,而其他案例则位于文字。

enter image description here

通过这个简单的过滤器,您可以根据需要转换包含这些信息的数据,并在“假”方面对错误进行处理。

这将稍微扩展您的转换,但是当您需要更改某些内容时,它比单步执行大量代码要容易得多。

答案 1 :(得分:0)

另一个答案指出,您可以通过不同的步骤获得相同的结果,而无需执行javascript步骤。

但是,如果您要走那条路线,则应首先将空值转换为例如空字符串。

只需将此代码添加到您的javascript代码的开头即可:

if (!RESUMEN){ RESUMEN = ''}

这会将空值转换为空字符串,然后indexOf正确返回。