在 JavaScript 中,搜索数组中的特定元素是一项常见任务。本教程演示如何使用 indexOf()
、lastIndexOf()
和 includes()
方法,通过 严格相等 的方式,准确地在数组中找到目标元素。
应用场景
当你需要在数组中精确查找某个元素,且要求元素的值和数据类型都完全匹配时,例如:
- 验证用户列表中是否已存在某个用户名。
- 核对输入的答案是否与预设的正确答案完全一致。
方法详解
1. indexOf(searchElement, fromIndex)
此方法用于在数组中查找元素首次出现的位置。
searchElement
:待查找的目标元素。fromIndex
(可选):搜索的起始位置,默认为 0,即从数组开始处搜索。
若找到元素,则返回其索引;否则返回 -1。
2. lastIndexOf(searchElement, fromIndex)
此方法用于查找元素在数组中最后一次出现的位置。
searchElement
:待查找的目标元素。fromIndex
(可选):搜索的起始位置,默认为数组末尾,即反向搜索的开始点。
若找到元素,则返回其索引;否则返回 -1。
3. includes(searchElement, fromIndex)
此方法用于判断数组中是否包含某个元素。
searchElement
:待查找的目标元素。fromIndex
(可选):搜索的起始位置,默认为 0。
若数组包含该元素,则返回 true
;否则返回 false
。
严格相等原则: 这些方法在比较时都遵循 严格相等 (===
) 的原则,确保值和类型均匹配。
示例代码
let numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
console.log(numbers.indexOf(4)); // 输出:3(首个 4 的位置)
console.log(numbers.lastIndexOf(4)); // 输出:5(最后一个 4 的位置)
console.log(numbers.includes(4)); // 输出:true(数组包含 4)
console.log(numbers.indexOf(4, 4)); // 输出:5(从索引 4 开始搜索到的首个 4)
console.log(numbers.lastIndexOf(4, 4)); // 输出:3(从索引 4 反向搜索到的首个 4)
console.log(numbers.includes(4, 7)); // 输出:false(从索引 7 开始搜索不到 4)
let person = { name: "Nicholas" };
let people = [{ name: "Nicholas" }];
let morePeople = [person];
// 即使属性相同,不同的对象实例也不被视为严格相等
console.log(people.indexOf(person)); // 输出:-1(people 数组中无 person 实例)
console.log(morePeople.indexOf(person)); // 输出:0(morePeople 数组中有 person 实例)
console.log(people.includes(person)); // 输出:false
console.log(morePeople.includes(person)); // 输出:true