返回
深入剖析JavaScript中的includes()和indexOf()
前端
2023-11-22 08:26:56
1. 基本区别
includes()和indexOf()都是用来检查数组是否包含某些元素,但它们在返回值和处理特殊情况方面存在一些关键区别。
-
返回值:
- includes():如果数组包含指定元素,则返回true;否则,返回false。
- indexOf():如果数组包含指定元素,则返回该元素在数组中的索引;如果数组不包含指定元素,则返回-1。
-
处理特殊情况:
- NaN:
- includes():如果数组包含NaN,则返回true。
- indexOf():如果数组包含NaN,则返回-1。
- undefined:
- includes():如果数组包含undefined,则返回false。
- indexOf():如果数组包含undefined,则返回-1。
- NaN:
-
比较NAN和undefined:
- NaN: NaN是一个特殊值,它既不等于自身,也不等于任何其他值,包括NaN。
- undefined: undefined是一个特殊值,它表示变量或属性尚未赋值。
2. 示例
// 创建一个数组
const arr = [1, 2, 3, 4, 5];
// 使用includes()检查数组是否包含数字3
const result = arr.includes(3);
console.log(result); // 输出:true
// 使用indexOf()检查数组中数字3的索引
const index = arr.indexOf(3);
console.log(index); // 输出:2
// 使用includes()检查数组是否包含字符串"apple"
const result2 = arr.includes("apple");
console.log(result2); // 输出:false
// 使用indexOf()检查数组中字符串"apple"的索引
const index2 = arr.indexOf("apple");
console.log(index2); // 输出:-1
// 使用includes()检查数组是否包含NaN
const result3 = arr.includes(NaN);
console.log(result3); // 输出:true
// 使用indexOf()检查数组中NaN的索引
const index3 = arr.indexOf(NaN);
console.log(index3); // 输出:-1
// 使用includes()检查数组是否包含undefined
const result4 = arr.includes(undefined);
console.log(result4); // 输出:false
// 使用indexOf()检查数组中undefined的索引
const index4 = arr.indexOf(undefined);
console.log(index4); // 输出:-1
3. 结论
includes()和indexOf()都是JavaScript中非常有用的数组方法,它们可以帮助我们轻松地检查数组是否包含某个元素。虽然它们的功能相似,但在返回值和处理特殊情况方面存在一些关键区别。在实际开发中,我们应该根据具体的需求选择合适的方法。