📜  如何在 JavaScript 中使 Array.indexOf() 不区分大小写?(1)

📅  最后修改于: 2023-12-03 15:38:17.502000             🧑  作者: Mango

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

在 JavaScript 中,Array.indexOf() 方法用于查找数组中某个元素的位置。但该方法默认区分大小写,这可能会导致我们无法准确地查到所需的元素。

本文将介绍如何在 JavaScript 中使 Array.indexOf() 方法不区分大小写。

1. 使用 Array.prototype.findIndex() 方法

我们可以使用 Array.prototype.findIndex() 方法代替 Array.indexOf() 方法,并且在回调函数中使用字符串的 toLowerCase() 或 toUpperCase() 方法将元素和目标值都转换为小写或大写,从而实现不区分大小写的查找。

下面是一个示例代码片段:

const arr = ['apple', 'Banana', 'Orange', 'grapes'];
const target = 'bAnAnA';
const index = arr.findIndex(elem => elem.toLowerCase() === target.toLowerCase());
console.log(index); // 1

在上面的代码中,我们将目标值 'bAnAnA' 转换为小写后,通过回调函数和 toLowerCase() 方法,将每个元素转换为小写,最后返回找到的元素的索引,即 1。

注意:

如果要查找的元素不存在于数组中,则返回值为 -1。因此在使用 findIndex() 方法时应该注意判断返回值。

2. 使用 Array.prototype.filter() 方法

除了使用 findIndex() 方法来查找不区分大小写的元素,我们还可以使用 Array.prototype.filter() 方法,将整个数组中不区分大小写匹配的元素筛选出来,并返回一个新的数组。这种方法可以应对查找多个元素的情况。

以下是示例代码片段:

const arr = ['apple', 'Banana', 'Orange', 'grapes'];
const target = 'bAnAnA';
const results = arr.filter(elem => elem.toLowerCase() === target.toLowerCase());
console.log(results); // ['Banana']

在上面的代码中,我们将目标值 'bAnAnA' 转换为小写后,通过回调函数和 toLowerCase() 方法,将每个元素转换为小写,最后返回匹配的元素的数组,即 ['Banana']。

注意:

如果没有匹配的元素,则返回一个空数组 []。

总结

以上两种方法都可以用来实现 Array.indexOf() 方法不区分大小写的查找。使用哪种方法可以根据实际情况来决定,如果只需要查找一个元素,建议使用 findIndex() 方法;如果需要查找多个元素,则建议使用 filter() 方法。