因此,我在下面的设置中,用户输入文本,并且我想查看是否有任何输入的字符与单词匹配。当我输入说出来时,一切都很好。
const input = 'memb';
但是如果做这样的事情。
const input = 'member has';
然后返回false。如果找到匹配的字符,则为true,member为匹配。成员have也是一个匹配项,因为字符m,e,m,b,e,r仍然是匹配项,尽管h,a,s与其他任何单词都不匹配。
任何人都知道,如果字符匹配,我如何才能保持其返回true?
const input = 'member has';
const inputLower = input.toLowerCase();
const words = ['member', 'support', 'life'];
const result = words.some(word => {
const words = word.split(',');
return words.some(r => r.toLowerCase().includes(inputLower));
});
console.log('result = ', result);
答案 0 :(得分:0)
您可以添加反向逻辑,还可以在其中检查inputLower
是否包含r
:
const input = 'memb has';
let inputLower = input.toLowerCase();
const words = ['member', 'support', 'life'];
const result = words.some(word => {
const words = word.split(',');
return words.some(r => {
if (~inputLower.indexOf( " " )) {
// only check the first word if there are multiple
inputLower = inputLower.substring( 0, inputLower.indexOf( " " ) );
}
return r.toLowerCase().includes(inputLower) || inputLower.includes(r.toLowerCase());
});
});
console.log('result = ', result);