我编写的代码应模仿Underscores的_.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。我希望将“ a”,“ b”然后“ c”登录到控制台。我已验证Array.isArray(testArr)返回true并且已输入if块。我没有正确进入for循环。

有人可以告诉我我for循环在做什么吗?

最佳答案

1)错字:legnth

2)您不能直接传递console.log-这会导致Illegal invocation错误。传递console.log.bind(console)或匿名函数。

3)undefined是函数的返回值。

关于javascript - 有条件地遍历数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35207052/

10-13 21:58