在 JavaScript 中使 Array.indexOf() 不区分大小写

要通过执行不区分大小写的查找来获取元素的索引,我们必须:

  1. 使用函数调用 方法
  2. 该函数应将数组元素和字符串转换为小写并进行相等性检查
  3. 方法返回元素的索引,如果没有元素满足条件则返回 -1
// Not Supported in IE 6-11
const arr = ['HELLO', 'WORLD'];
const str = 'world';

const index = arr.findIndex(element => {
  return element.toLowerCase() === str.toLowerCase();
});

console.log(index); // 👉️ 1

if (index !== -1) {
  // 👉️ string is in the array
}

我们传递给 方法的函数会针对数组的每个元素进行调用,直到它返回真值或遍历所有元素。

在代码片段中,我们将数组元素和字符串都转换为小写,以使比较不区分大小写。

通过将元素和字符串转换为大写可以实现相同的结果。

该字符串包含在索引 1 处的数组中,因此这是 的返回值。

如果相等比较从未返回 true,则 Array.findIndex 将返回 -1。

我们无法通过使用 Array.indexOf 执行不区分大小写的查找来获取元素的索引,因为该方法直接接收值并且不允许我们遍历每个数组元素并操作它们(例如小写)。

请注意,Internet Explorer 6-11 不支持 ,因此如果您必须支持浏览器,请确保获取 polyfill 或使用 babel 将我们的代码转换为浏览器可以理解的旧版本的 JavaScript。