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

问题描述 投票:0回答:2

我正在试图在CSV文件的“RESUMEN”字段中找到包含“SO - ”或“NS - SO”或“SO - ”或“SWAT”的记录,以便为新类别设置(在这种情况下将是“呼叫中心”)。所以,我使用“indexOf”功能的女巫效果很好。

当我更改数据源(它也是CSV)时出现问题,这给了我下一步的错误:“引起:org.mozilla.javascript.EcmaError:TypeError:无法调用方法”indexOf“的null(脚本) #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 = ""

我希望像第一个文件一样分配呼叫中心类别(我没有改变任何东西)

问候!

javascript pentaho indexof pentaho-spoon pentaho-data-integration
2个回答
0
投票

你的问题太复杂了。

在回答之前,记住一些事情,有几个步骤和步骤组合,它们可以实现令人难以置信的转换次数以制作可用的模式,这是IS用户定义的Java表达式的最后手段。

看起来你想要实现的是一个值映射,与你的情况中的直接值映射的区别在于,你正在测试的行必须包含“SO - ”,其他情况,在文本的某个地方。

enter image description here

使用这个简单的过滤器,您可以根据需要转换包含这些信息的数据,并在“FALSE”端将其视为错误。

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


0
投票

正如另一个答案所指出的,你可以用不同的步骤实现相同的结果,你不需要javascript步骤。

但是,如果你想要去那条路线,你应该首先将空值转换成例如空字符串。

只需将其添加到您的JavaScript代码的开头:

if (!RESUMEN){ RESUMEN = ''}

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

© www.soinside.com 2019 - 2024. All rights reserved.