跳到主要内容

JavaScript 数组的 indexOf() 方法详解

indexOf() 方法返回数组元素首次出现的索引,如果未找到则返回 -1

示例

let languages = ["Java", "JavaScript", "Python", "JavaScript"];

// 获取 "JavaScript" 第一次出现的索引
let index = languages.indexOf("JavaScript");
console.log(index);

// 输出:1

indexOf() 语法

indexOf() 方法的语法为:

arr.indexOf(searchElement, fromIndex);

这里的 arr 是一个数组。

indexOf() 参数

indexOf() 方法接受以下参数:

  • searchElement - 要在数组中查找的元素。
  • fromIndex(可选)- 搜索的起始索引。默认为 0

indexOf() 返回值

  • 如果元素在数组中至少出现一次,则返回该元素在数组中的首个索引。
  • 如果数组中未找到该元素,则返回 -1

注意: indexOf() 使用 严格相等(类似于三等号运算符或 ===)来比较 searchElement 与数组的元素。

示例 1:使用 indexOf() 方法

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

// indexOf() 返回首次出现的位置
var index1 = priceList.indexOf(31);
console.log(index1); // 3

var index2 = priceList.indexOf(10);
console.log(index2); // 0

// 第二个参数指定搜索的起始索引
var index3 = priceList.indexOf(10, 1);
console.log(index3); // 4

// 如果未找到,indexOf 返回 -1
var index4 = priceList.indexOf(69.5);
console.log(index4); // -1

输出

3
0
4
-1

注释:

  • 如果 fromIndex >= array.length,则不搜索数组且返回 -1
  • 如果 fromIndex < 0,则从后向前计算索引。例如,-1 表示最后一个元素的索引,依此类推。

示例 2:查找元素的所有出现位置

function findAllIndex(array, element) {
indices = [];
var currentIndex = array.indexOf(element);
while (currentIndex != -1) {
indices.push(currentIndex);
currentIndex = array.indexOf(element, currentIndex + 1);
}
return indices;
}

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

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

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

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

输出

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

示例 3:判断元素是否存在,否则添加元素

function checkOrAdd(array, element) {
if (array.indexOf(element) === -1) {
array.push(element);
console.log("未找到元素!已更新数组。");
} else {
console.log(element + " 已存在于数组中。");
}
}

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

checkOrAdd(parts, "CPU"); // 未找到元素!已更新数组。
console.log(parts); // [ 'Monitor', 'Keyboard', 'Mouse', 'Speaker', 'CPU' ]

checkOrAdd(parts, "Mouse"); // 鼠标已存在于数组中。

输出

未找到元素!已更新数组。
[ 'Monitor', 'Keyboard', 'Mouse', 'Speaker', 'CPU' ]
鼠标已存在于数组中。

推荐阅读: JavaScript 数组 lastIndexOf()