【问题标题】:TypeError: Cannot call method "indexOf" of nullTypeError:无法调用 null 的方法“indexOf”
【发布时间】:2019-04-22 20:51:45
【问题描述】:

我正在尝试从 CSV 文件的“简历”字段中查找包含“SO -”或“NS - SO”或“SO -”或“SWAT”的记录,以分配一个新类别(在此案例将是“呼叫中心”)。所以,我使用“indexOf”功能女巫工作得很好。

当我更改数据源时出现问题(它也是一个 CSV),这给了我该步骤的下一个错误: "引起:org.mozilla.javascript.EcmaError: TypeError: 无法调用 null (script#2) 的方法 "indexOf""

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

我的代码

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

我希望像使用第一个文件一样分配呼叫中心类别(我没有更改任何内容)

问候!

【问题讨论】:

  • 显然RESUMEN 为空,所以在做任何事情之前运行检查if (RESUMEN)
  • 您确定您的 RESUMEN 变量已设置吗?尝试将它记录到控制台以查看它打印的内容,如果它打印为 null,那么你就有了。
  • 可以这样声明: const RESUMEN = null;然后你忘了改变它的价值
  • @SuperSimplePimpleDimple 没有必要将其注销,因为我们已经知道它的值为 null。
  • @IsaacVidrine 是的,但有些人会感到困惑并且不理解错误消息。这样,他将看到他试图访问 indexOf 属性的变量为空。我已经看到很多问题要求回答诸如“无法访问 undefined/null 的某些属性”之类的错误。

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


【解决方案1】:

你把问题复杂化了。

在回答之前,记住一些事情,有几个步骤和步骤组合,可以实现数量惊人的转换以生成可用的模式,最后的手段是用户定义的 Java 表达式。

似乎您想要实现的是值映射,您与直接值映射的区别在于您正在测试的行必须包含“SO -”,而其他情况下,在某处文本。

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

这会稍微扩展您的转换,但是当您需要更改某些内容时,它会比一步步编写大量代码更容易。

【讨论】:

  • 这似乎并没有真正解决他遇到的问题(从 CSV 中获得 null 结果)。
  • 确实如此,因为这一步实现了相同的结果,而不会在 null 上引发错误。
【解决方案2】:

正如另一个答案指出的那样,您可以通过不同的步骤达到相同的结果,您不需要 javascript 步骤。

但是,如果你想走这条路,你应该首先将空值转换为,例如,空字符串。

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

if (!RESUMEN){ RESUMEN = ''}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多