我正在尝试重写下划线 _.find() 以进行练习,并且在运行它时变得不确定。继承人的代码:
// _.find(list, predicate, context);
var findIt = function(list, predicate) {
for (var i = 0; i < i.length; i++) {
if (predicate(list[i]) == true)
{return i;}
else{return false;}
}
}
var predicate = function (first) {
return first % 2 == 0;
}
console.log(findIt(arr, predicate));
var arr = [1, 2, 3, 5];
这里出了什么问题?
最佳答案
代码中的问题列表
您正在为
arr
赋值,仅在将其传递给findIt
函数之后。因此,它将具有默认值undefined
。在 for 循环中,如果第一个元素与预期的元素不匹配,那么您将立即返回
false
,但您应该在返回之前检查所有元素错误
。循环必须在
list
的长度上运行,但是您正在使用i.length
,这将不起作用,因为i
是一个数字,它不会有length
属性。
关于javascript - 在 Javascript 中重写 _.find 函数时得到 "undefined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26194228/