2016-02-04 3 views
0

Я пишу код, который должен имитировать функциональность метода _.each подстроки. Тем не менее, с кодом у меня сейчас ...Условно перемещение массива

var testArr = ['a','b','c']; 

var eachFunc = function(collection, iterator) { 
    if (Array.isArray(collection)) { 
    for (var i = 0; i < collection.legnth; i++) { 
     iterator(collection[i]); 
    } 
    } 
    else { 
    for (var property in collection) { 
     iterator(collection[property]); 
    } 
    } 
}; 

console.log(eachFunc(testArr, console.log)); 

Я только вернуть undefined. Я бы ожидал, чтобы log 'a', 'b', затем 'c', на консоль. Я подтвердил, что Array.isArray(testArr) возвращает true и что в блок if введен. Это цикл for, в который я не вхожу.

Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно с этим циклом for?

+1

В вашем 'for..loop' есть опечатка:' collection.legnth' – Xophmeister

ответ

2

1) Типо: legnth.

2) Вы не можете пройти console.log напрямую - это приводит к ошибке Illegal invocation. Передайте либо console.log.bind(console), либо анонимную функцию.

3) Это возвращает undefined значение вашей функции.