indexOf 函数的语法是如何工作的?

How the syntax of the indexOf function works?

因此索引函数将 returns 可以在数组中找到值的索引,或者 -1 如果数组中不存在值,另外,它 returns 第一个索引当有多个匹配时,可以找到目标。

BUT 为什么设置 item === target && result === -1 ,这部分没有意义?如果给定值在数组中为真且当 result === -1 时?我们设置 result = index ?这部分的目的是什么......?

顺便说一句,我们为数组中找不到的目标设置var result = -1对吗?

  _.indexOf = function(array, target){

    var result = -1;

    _.each(array, function(item, index) {
      if (item === target && result === -1) {
        result = index;
      }
    });
    return result;
  };

如果它没有测试 result 是否是 -1 那么它将 return 最后一个 匹配的索引第一场比赛。

好吧,只有当两个条件为真时,您才想将 result 变量设置为当前 index

  • 现在的item是关注的target
  • result仍然有初始值-1,即目标尚未找到

这样,result 将包含循环后 第一个 匹配项的索引。

顺便说一句,这应该是在没有 result 变量和 _.each 循环的情况下编码的,有一个正常的 for 循环和一个早期的 return 它既更快又更容易理解:

_.indexOf = function(array, target) {
    for (var i=0; i<array.length; i++) {
        var item = array[i];
        if (item === target) {
            return index;
        }
    }
    return -1;
};

如果删除 result === -1 部分,您将具有不同的功能 returns 最后一个等于目标的元素的索引。