得到“;未定义的“;在重写Javascript中的_.find函数时
getting "undefined" when rewriting _.find function in Javascript
我正试图重写下划线_.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];
这里出了什么问题?
代码中的问题列表
-
只有在将值传递给
findIt
函数之后,才将值分配给arr
。因此,它将具有默认值undefined
-
在for循环中,如果第一个元素与期望的元素不匹配,则会立即返回
false
,但在返回false
之前应该检查所有元素。 -
循环必须在
list
的长度上运行,但您使用的是i.length
,这将不起作用,因为i
是一个数字,它不具有length
属性。
您使用的是i.length
,但i
不是列表。
当您知道没有匹配项时,而不是当第一个匹配失败时,您应该返回在循环之后没有找到匹配项。
要匹配_find
方法的作用,它应该返回项,而不是项的索引,如果不匹配,则返回undefined
。
在为变量分配值之前,您正在使用变量arr
。
var findIt = function(list, predicate) {
for (var i = 0; i < list.length; i++) {
if (predicate(list[i]) == true) {
return list[i];
}
}
return undefined;
}
var predicate = function (first) {
return first % 2 == 0;
}
var arr = [1, 2, 3, 5];
console.log(findIt(arr, predicate));
相关文章:
- Ember.js-模型find()方法中的异步调用
- mongodb中db.collection.find()的返回类型是什么
- 如何在 jquery 中的 find() 中动态提供元素/标签
- Uncatch TypeError:DB.find 不是 React with Meteor 1.3 中的函数
- 当变量中的.find()项有多个匹配项时,jQuery问题
- Don'在IE中调用find next时,不要高亮显示Codemirror中的光标
- 调用db.eval()中的db.collection.find()
- jquery find关闭td中的span
- 有没有一种方法可以在mongoose中的find()中使用变量作为字段名
- jQuery “find()” 导致 Internet Explorer 10 中的 win32 错误,但不是 9
- 为什么 JavaScript 中的对象没有 find 方法
- jQuery通过索引访问“.find”中的每个匹配元素
- 发布中的 Meteor find() 返回数据,尽管选择键为空
- 如何使用node-mongodb-native在mongodb find()的回调中返回临时集合
- 回调不是mongoose.find({})中的函数
- 我从 model.find() 的返回函数中未定义
- 通过find(:all)获取json中的ID
- 从mongodb中的两个集合中的find生成一个json
- 在缓存对象文字中的元素时使用find()的语法
- 为什么$.fn.find()中的选择器不能引用当前$作用域之外的树?