获得;“未定义”;重写Javascript中的ux.find函数时
我正试图重写下划线u.find(),以便练习,但在运行它时却变得不精确。代码如下:获得;“未定义”;重写Javascript中的ux.find函数时,javascript,functional-programming,underscore.js,Javascript,Functional Programming,Underscore.js,我正试图重写下划线u.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
// _.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];
/\查找(列表、谓词、上下文);
var findIt=函数(列表,谓词){
对于(变量i=0;i
这里出了什么问题?代码中的问题列表
findIt
函数之后,才将值赋值给arr
。因此,它将具有默认值undefined
false
,但在返回false
之前,应该检查所有元素列表的长度上运行,但您使用的是i.length
,这将不起作用,因为i
是一个数字,并且它没有length
属性
您使用的是
i.length
,但是i
不是列表
当您知道所有项都不匹配时,应该返回在循环后未找到匹配项,而不是在第一次匹配失败时
要匹配\u find
方法所做的,它应该返回项,而不是项的索引,如果不匹配,则返回未定义的
在给变量赋值之前,您正在使用变量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));
var findIt=函数(列表,谓词){
对于(变量i=0;i