如果数组元素与其大小写不匹配,则搜索不会返回数组元素

By simon at 2018-02-07 • 0人收藏 • 29人看过

我在下面的代码片段中搜索匹配的数组元素 给定的字符串。 它按预期工作,但它的工作只有当我给文本相同时才返回 案件。 例如。给定的文本是“萨”它返回元素只有“萨”而不是“萨”和“SA”我希望它返回所有与该字符串匹配的数组元素 不管情况如何。 它应该返回所有的即使我给“sa”或“SA”三个元素

var k = [{name:"Sameer"},{name:"salman"},{name:"SAHIL"}];

k = k.filter(s =>{
  return ~s.name.indexOf("S");
});

console.log(k)
[链接到JS小提琴](https://jsfiddle.net/62ahufxg/)

5 个回复 | 最后更新于 2018-02-07
2018-02-07   #1

 k = k.filter(name => name.toLowerCase().indexOf("s") === 0);
只是统一案件。

2018-02-07   #2

如果您使用大写字母或toLowerCase(),请致电toUpperCase() 如果您使用的是小写字符。休息,每一个你的代码工作 精细。

var k = [{name:"Sameer"},{name:"salman"},{name:"SAHIL"}];

k = k.filter(s =>{
  return ~s.name.toUpperCase().indexOf("S");
});

console.log(k)
当你在fiter里面有单个语句时,你可以省略 return l这个。
var k = [{name:"Sameer"},{name:"salman"},{name:"SAHIL"}];

k = k.filter(s => ~s.name.toUpperCase().indexOf("S"));

console.log(k)

2018-02-07   #3

您可以将toUpperCase应用到name键,然后检查indexOf 喜欢

// Update with lowercase or uppercase string here
var searchString = 's';  

var k = [{name:"Sameer"},{name:"salman"},{name:"SAHIL"}];

k = k.filter(({name}) => ~name.toUpperCase().indexOf(searchString.toUpperCase()));

console.log(k)
.as-console-wrapper { max-height: 100% !important; top: 0; }

2018-02-07   #4

var k = [{name:"Sameer"},{name:"salman"},{name:"SAHIL"}];

k = k.filter(s =>{
   return ~(s.name.toLowerCase()).indexOf("s");
});

console.log(k);
尝试这个

2018-02-07   #5

我想你应该使用str.includes()。请参阅 https://www.w3schools.com/jsref/jsref_includes.asp。我所知str.indexOf() 用于特定的字符或字符串。

登录后方可回帖

Loading...