# 描述

lastIndexOf() 方法返回在指定元素在数组中的最后一个的索引,如果不存在则返回 -1 。

查找方式为从数组的后面向前查找,从 fromIndex 处开始(使用全等操作符)。

# 参数

参数 描述
searchElement 要查找的元素
fromIndex 可选。开始查找的位置,在此位置开始从后向前查找。如果该值为负值且绝对值大于或等于数组长度,则返回 -1 。如果参数提供的是一个负值,则将其作为数组末尾的一个抵消,即 -1 表示从最后一个元素开始查找, -2 表示从倒数第二个元素开始查找,以此类推(查找顺序不变,仍然是从后向前查询数组)。默认值为数组长度减 1 ,即整个数组都被查找 。

# 返回值

首个被找到的元素在数组中的索引,若没有找到则返回 -1 。

# 示例

# 返回首个被查找到的元素的索引

var arr = ["a", "b", "c", "b", "a"];

var indexB = arr.lastIndexOf("b");

var indexD = arr.lastIndexOf("d");

console.log(indexB); //  3
console.log(indexD); //  -1

# 严格相等

var arr = [1, 2, 3];

var indexStr = arr.lastIndexOf("2");
var indexNum = arr.lastIndexOf(2);

console.log(indexStr); //  -1
console.log(indexNum); //  1

# 使用 fromeIndex 参数

var arr = ["a", "b", "c", "b", "a"];

var indexB1 = arr.lastIndexOf("b");
var indexB2 = arr.lastIndexOf("b", 2);

console.log(indexB1); //  3
console.log(indexB2); //  1

# fromIndex 为负值

var arr = ["a", "b", "c", "b", "a"];

var index1 = arr.lastIndexOf("a");

// -2 表示从倒数第二个元素开始查找
var index2 = arr.lastIndexOf("a", -2);

console.log(index1); //  4
console.log(index2); //  0

# fromIndex 为负值且绝对值大于或等于数组长度,返回 -1

var arr = ["a", "b", "c"];

var indexA = arr.lastIndexOf("a", 5);
var indexB = arr.lastIndexOf("b", -5);

console.log(indexA); //  0
console.log(indexB); //  -1

# 模拟实现

Array.prototype.lastIndexOf = function(searchElement, fromIndex) {
  var se = searchElement;
  var arr = this;
  var len = arr.length;
  var fi = parseInt(fromIndex) || len - 1;
  var i = fi;

  if (fi < 0 && -fi >= len) return -1;

  if (fi < 0) {
    i = len + fi;
  }

  for (; i >= 0; i--) {
    if (arr[i] === se) {
      return i;
    }
  }
  return -1;
};
上次更新: 8/9/2021, 11:31:12 AM