startsWith 不是无缘无故被调用的函数

新手上路,请多包涵

我有这段代码:

 for (var i = 0; i < value.length; i++) {
    if (typeof value[i].keyword == 'undefined' || value[i].keyword == null || value[i].keyword.startsWith(keyword)) {
        out.push(value[i]);
    }
}

我收到一条错误消息:

 > TypeError: r[e].startsWith is not a function
>    at js-cf2cc68….min.js.gz:85
>    at fn (eval at compile (js-cf2cc68….min.js.gz:8), <anonymous>:4:1003)
>    at js-cf2cc68….min.js.gz:7
>    at p.$digest (js-cf2cc68….min.js.gz:7)
>    at p.$apply (js-cf2cc68….min.js.gz:7)
>    at HTMLBodyElement.<anonymous> (js-cf2cc68….min.js.gz:9)

这怎么可能?我想我已经解释了一切。

原文由 Samantha J T Star 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 970
2 个回答

value[i].keyword.startsWith("keyword") 因为start with的参数必须是字符串。

这样会更好

for (var i = 0; i < value.length; i++) {
    if (typeof value[i].keyword == String(undefined) || value[i].keyword.startsWith("keyword"))
        out.push(value[i]);
}

原文由 kevin ternet 发布,翻译遵循 CC BY-SA 4.0 许可协议

找到一篇关于此主题 的有用文章

转换为字符串的三种方法是:

  1. 值.toString()
  2. ”” + 值
  3. 字符串值)

这里要注意的一点是,如果值为 null 或未定义,则方法 #1 不起作用。

就我而言,由于某种原因,方法 # 2 也不起作用,因此最好的选择是 String(value)

 var col = "rt_" + rows[i]["results"][r].ResultTypeID.substring(1); //did not work

var col = "rt_" + String(rows[i]["results"][r].ResultTypeID).substring(1);

原文由 Samra 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题