2016-03-17 4 views
0

У меня есть массив объектов:странное поведение с array.forEach

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

I цикл по каждому объекту преобразования и передать их в определенной функции:

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.

Я не смог понять, почему этот нечетный объект есть или как его фильтровать. Я пробовал проверять его на null и undefined, но и не сделал этого. Я даже попытался проверить его на NaN.toLocaleString() + " " + undefined, но это тоже не сработало.

Это часть пользовательского документа, работающего в Chrome с использованием Tampermonkey.

+0

NaN обычно указывает на сбой вычисления, глядя здесь: http://stackoverflow.com/questions/28159572/localization-of-nan-in-dede-returns-nan-rather-than-n-def-in-windows -8-ser и http://stackoverflow.com/questions/34261938/what-is-the-difference-between-nan-nan-and-nan-nan – Petro

+1

Пожалуйста, покажите нам весь код, необходимый для создания этого журнала. – Bergi

+0

@Bergi Это все соответствующий код. Остальное не имеет ничего общего с этой проблемой. Все это характерно для определенного сайта чата, который я использую, который предоставляет публичный API для чтения входящих сообщений и редактирования их по мере необходимости. – Spans

ответ

1

Оказывается, проблема была в моем коде. В несвязанной функции я добавлял элементы в массив conversions, а не правильный массив внутри этой функции.