为什么包含在JavaScript中区分大小写?



我最近偶然发现了一个由javascript中的.includes()方法引起的错误。我想返回不区分大小写的确切结果,但由于某种原因,这不起作用

["Ford", "BMW", "Fiat"].includes("bmw");
//returns false
//expected result true

然后在.find()的帮助下修复了我的问题,如下所示:

!!["Ford", "BMW", "Fiat"].find(el => el.toUpperCase() === "bmw".toUpperCase());
//returns true

有人能帮我理解为什么includes在大小写不敏感的情况下不工作吗?

为什么不区分大小写?引用MDN:

includes()方法判断数组的条目中是否包含某个值,并根据需要返回true或false。[…]注意:从技术上讲,includes()使用sameValueZero算法来确定是否找到给定的元素。

sameValueZero定义为Object.is,但+0-0相等。

既然如此,我们可以试试:

> Object.is("bmw", "BMW")
false
> Object.is("bmw", "bmw")
true

最新更新