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

时间:2018-02-06 13:43:20

标签: javascript arrays sorting typescript

我在下面有一个代码片段,用于搜索与给定字符串匹配的数组元素。

它按预期工作,但只有在我给出相同案例的文本时才会返回。

例如。给定的文字是" Sa"它返回的元素只有" Sa"不是" sa"和" SA"我希望它返回所有与字符串匹配的数组元素,无论大小写。

它应该返回所有三个元素,即使我给出了#34; sa"或" SA"

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

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

console.log(k)

Link to JS fiddle

5 个答案:

答案 0 :(得分:1)

 k = k.filter(name => name.toLowerCase().indexOf("s") === 0);

只是统一案件。

答案 1 :(得分:0)

如果使用大写字符,请调用toUpperCase();如果使用小写字符,则调用toLowerCase()。休息,代码中的所有内容都可以正常工作。



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

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

console.log(k)




如果您在fiter内有单一陈述,则可以省略return这样的内容。



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

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

console.log(k)




答案 2 :(得分:0)

您可以将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; }




答案 3 :(得分:0)

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

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

console.log(k);

试试这个

答案 4 :(得分:0)

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