我在下面有一个代码片段,用于搜索与给定字符串匹配的数组元素。
它按预期工作,但只有在我给出相同案例的文本时才会返回。
例如。给定的文字是" 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)
答案 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()用于特定的字符或字符串。