array.forEach的奇怪行为

时间:2016-03-17 22:55:58

标签: javascript arrays foreach undefined nan

我有一个对象数组:

var conversions = [
    { regex: ..., names: [ ... ] },
    ...
];

我遍历每个转换对象并将它们传递给某个函数:

conversions.forEach(function(conv) {
    // function selection logic

    var result = func(message, conv); // func is the selected function, message is defined before

    // result logic
}

循环适用于数组中的所有对象,但在最后一个对象之后,一个奇怪的对象被传递给不属于我的数组的回调。在回调的最开始添加console.log(conv);会正确打印所有转换,但最后一个奇怪的对象打印为epäluku undefined。 “Epäluku”是NaN的糟糕芬兰语翻译,这意味着输出与NaN.toLocaleString() + " " + undefined相同。

我无法弄清楚为什么这个奇怪的物体存在,或者如何过滤它。我已尝试针对nullundefined进行检查,但两者都没有。我甚至尝试对NaN.toLocaleString() + " " + undefined进行检查,但这也不起作用。

这是使用Tampermonkey在Chrome中运行的用户脚本的一部分。

1 个答案:

答案 0 :(得分:1)

原来问题是我的代码一直都是。在一个不相关的函数中,我在conversions数组中添加元素,而不是在该函数中添加正确的数组。