得到“;未定义的“;在重写Javascript中的_.find函数时

getting "undefined" when rewriting _.find function in Javascript

本文关键字:find 中的 函数 重写 未定义 得到 Javascript      更新时间:2023-09-26

我正试图重写下划线_.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]; 

这里出了什么问题?

代码中的问题列表

  1. 只有在将值传递给findIt函数之后,才将值分配给arr。因此,它将具有默认值undefined

  2. 在for循环中,如果第一个元素与期望的元素不匹配,则会立即返回false,但在返回false之前应该检查所有元素。

  3. 循环必须在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));