📜  JavaScript数组lastIndexOf()

📅  最后修改于: 2020-09-27 05:49:19             🧑  作者: Mango

JavaScript Array lastIndexOf()方法返回可以在数组中找到给定元素的最后一个索引;如果不存在,则返回-1。

lastIndexOf()方法的语法为:

arr.lastIndexOf(searchElement, fromIndex)

在这里, arr是一个数组。


lastIndexOf()参数

lastIndexOf()方法采用:

  • searchElement-要在数组中定位的元素。
  • fromIndex (可选)-开始向后搜索的索引。默认情况下为array.length-1

从lastIndexOf()返回值
  • 如果该元素至少存在一次,则返回该元素在数组中的最后一个索引。
  • 如果在数组中找不到该元素,则返回-1

注意: lastIndexOf()使用严格等于 (类似于三重等于运算符或=== )将searchElement与Array的元素进行比较。


示例1:使用lastIndexOf()方法
var priceList = [10, 8, 2, 31, 10, 1, 65];

// lastIndexOf() returns the last occurance
var index1 = priceList.lastIndexOf(31);
console.log(index1); // 3

var index2 = priceList.lastIndexOf(10);
console.log(index2); // 4

// second argument specifies the backward search's start index
var index3 = priceList.lastIndexOf(10, 3);
console.log(index3); // 0

// lastIndexOf returns -1 if not found
var index4 = priceList.lastIndexOf(69.5);
console.log(index4); // -1

输出

3
4
0
-1

笔记:

  • 如果fromIndex <0 ,则向后计算索引。例如, -1表示最后一个元素,依此类推。
  • 如果计算出的索引即array.length + fromIndex <0 ,则返回-1

示例2:查找元素的所有出现
function findAllIndex(array, element) {
  indices = [];
  var currentIndex = array.lastIndexOf(element);
  while (currentIndex != -1) {
    indices.push(currentIndex);
    if (currentIndex > 0) {
      currentIndex = array.lastIndexOf(element, currentIndex - 1);
    } else {
      currentIndex = -1;
    }
  }
  return indices;
}

var priceList = [10, 8, 2, 31, 10, 1, 65, 10];

var occurance1 = findAllIndex(priceList, 10);
console.log(occurance1); // [ 7, 4, 0 ]

var occurance2 = findAllIndex(priceList, 8);
console.log(occurance2); // [ 1 ]

var occurance3 = findAllIndex(priceList, 9);
console.log(occurance3); // []

输出

[ 7, 4, 0 ]
[ 1 ]
[]

在这里,添加了if (currentIndex > 0)语句,以便索引0处的出现不会为currentIndex - 1给出-1 。这将导致从后面再次搜索,并且程序将陷入无限循环。


示例3:查找元素是否存在其他添加元素
function checkOrAdd(array, element) {
  if (array.lastIndexOf(element) === -1) {
    array.push(element);
    console.log("Element not Found! Updated the array.");
  } else {
    console.log(element + " is already in the array.");
  }
}

var parts = ["Monitor", "Keyboard", "Mouse", "Speaker"];

checkOrAdd(parts, "CPU"); // Element not Found! Updated the array.
console.log(parts); // [ 'Monitor', 'Keyboard', 'Mouse', 'Speaker', 'CPU' ]

checkOrAdd(parts, "Mouse"); // Mouse is already in the array.

输出

Element not Found! Updated the array.
[ 'Monitor', 'Keyboard', 'Mouse', 'Speaker', 'CPU' ]
Mouse is already in the array.

推荐读物:

  • JavaScript数组
  • JavaScript Array.indexOf()