微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我们在这段代码中使用 query.toLowerCase() 不区分大小写底线

如何解决为什么我们在这段代码中使用 query.toLowerCase() 不区分大小写底线

我正在尝试理解第二个 toLowerCase 。这是代码

var fruits = ['apple','banana','grapes','mango','orange'];

function filterItems(query) {
  return fruits.filter(function(el) {
    return el.toLowerCase().indexOf(query.toLowerCase()) > -1;
  })
}

console.log(filterItems('ap')); // ['apple','grapes']

解决方法

该函数比较两个字符串不区分大小写,所以我们假设 AbcabC。 第一个 .toLowerCaseAbc 降低到 abc,第二个 abC 降低到 abc

因此,您可以成功地将两者相互比较,而没有两者中的任何一个都无法进行。

编辑:准确地说,“indexOf”-方法在内部比较需要相同大小写的两个值。

,

因为程序员希望输入在其情况下不统一,并且他们所做的比较区分大小写。将所有内容都转换为小写有助于他们进行比较而不会出现 Apple != apple

之类的错误 ,

试试这个

 var fruits = ['apple','banana','grapes','mango','orange'];
 function filterItems(query) {   return fruits.filter(function(el) {
       return el.toLowerCase().indexOf(query) > -1;   }) }
 
 console.log(filterItems('AP')); // ['apple','grapes']

如果没有 toLowerCase,您将无法获得预期的结果。 indexOf 函数检查 caseSensitive.so,我们需要将 querystring 和 searchString 更改为相同的敏感字符串。所以,我们在那里使用 toLowerCase()

,

不区分大小写

它使下面代码片段中的函数 case-insesitive 我删除了第二个 toLowerCase() 并使查询的第一个字母大写,因为您可以看到结果集将为空

var fruits = ['apple','orange'];

function filterItems(query) {
  return fruits.filter(function(el) {
    return el.toLowerCase().indexOf(query) > -1;
  })
}

console.log(filterItems('Ap')); // ['Apple','grapes']

原因是它将使水果的第一个元素 toLowerCase()(已经是)但如果它是 AppLe -> apple 并进行比较with indexOf IndexOf 返回第一次出现的位置,如果字符串 Ap 出现在调用字符串中,但不是这种情况。

但是对于第二个 toLowerCase() 确实如此。

底线

toLowerCase() 函数将使名称中的每个字母都变成小写,例如 AbAbcbsAbA -> ababcbsaba

所以第一个 toLowerCase() 使每个水果像 AppleBannanaapple banana 和第二个使查询类似于 Apap

这导致 filterItems 不区分大小写。

var fruits = ['apple','orange'];

function filterItems(query) {
  return fruits.filter(function(el) {
    return el.toLowerCase().indexOf(query.toLowerCase()) > -1;
  })
}

console.log(filterItems('Ap')); // ['Apple','grapes']

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。