Javascript 如果黑名单中没有字母,则返回true
如果黑名单中没有字母,则返回true 都出现在短语中。如果至少有一封来自 黑名单出现在短语return false中 比较应该不区分大小写。意思是“A”==“A”Javascript 如果黑名单中没有字母,则返回true,javascript,Javascript,如果黑名单中没有字母,则返回true 都出现在短语中。如果至少有一封来自 黑名单出现在短语return false中 比较应该不区分大小写。意思是“A”==“A” /** * * @param {string} blacklist * @param {string} phrase * * @returns {boolean} */ function hasNoneLetters(blacklist, phrase) {
/**
*
* @param {string} blacklist
* @param {string} phrase
*
* @returns {boolean}
*/
function hasNoneLetters(blacklist, phrase) {
console.log(blacklist)
var x = phrase.includes(blacklist);
if(x === false){
return true
}
else{
return false
}
}
你需要检查黑名单中的每一封信,而不是一次检查全部黑名单
function hasNoneLetters(blacklist, phrase) {
let lowerCasePhrase = phrase.toLowerCase();
for (let letter of blacklist.toLowerCase()) {
if (lowerCasePhrase.includes(letter)) return false
}
return true
}
此外,您可能希望使用
集合
,在其中插入短语的所有字母以优化性能。这将使您的运行时间从O(N*M)下降到O(max(N,M)),其中N和M是输入的长度。您需要立即检查黑名单中的每个字母,而不是整个黑名单
function hasNoneLetters(blacklist, phrase) {
let lowerCasePhrase = phrase.toLowerCase();
for (let letter of blacklist.toLowerCase()) {
if (lowerCasePhrase.includes(letter)) return false
}
return true
}
此外,您可能希望使用
集合
,在其中插入短语的所有字母以优化性能。这将使您的运行时间从O(N*M)下降到O(max(N,M)),其中N和M是输入的长度。您不是在问问题-您在为什么挣扎
如果您想知道为什么您的函数不工作,
var x=phrase.includes(黑名单)
,仅当整个黑名单出现时,才会返回true
,按顺序出现在短语中,您不是在问问题-您在挣扎什么
如果您想知道为什么您的函数不工作,var x=phrase.includes(黑名单)
,仅当整个黑名单
在短语
中按顺序出现时才会返回true
,因为您正在检查一个字符串是否完整包含在另一个字符串中,所以它不起作用。相反,您需要分别获取黑名单
的每个字符,并检查它是否存在于短语
字符串中
此外,对字符串使用toLowerCase
,以进行不区分大小写的比较
函数包含多个字母(黑名单、短语){
blacklist=blacklist.toLowerCase();
短语=短语.toLowerCase();
for(黑名单的常量字符)
如果(短语包括(字符))
返回false;
返回真值
}
log(hasNoneLetters('abc','This has'))
log(hasNoneLetters('XYZ','This doesnt'))
log(hasNoneLetters('C','不区分大小写'))
它不起作用,因为您正在检查一个字符串是否完整地包含在另一个字符串中。相反,您需要分别获取黑名单
的每个字符,并检查它是否存在于短语
字符串中
此外,对字符串使用toLowerCase
,以进行不区分大小写的比较
函数包含多个字母(黑名单、短语){
blacklist=blacklist.toLowerCase();
短语=短语.toLowerCase();
for(黑名单的常量字符)
如果(短语包括(字符))
返回false;
返回真值
}
log(hasNoneLetters('abc','This has'))
log(hasNoneLetters('XYZ','This doesnt'))
log(hasNoneLetters('C','不区分大小写'))
最短的答案
function hasNoneLetters(blacklist, phrase) {
return !blacklist.split('').find(b => phrase.includes(b))
}
函数包含多个字母(黑名单、短语){
return!blacklist.split(“”).find(b=>phrase.includes(b))
}
log(hasNoneLetters('Abc','the短语'))
log(hasNoneLetters('Abc','the短语'))
log(hasNoneLetters('abc','the短语'))
最短的答案
function hasNoneLetters(blacklist, phrase) {
return !blacklist.split('').find(b => phrase.includes(b))
}
函数包含多个字母(黑名单、短语){
return!blacklist.split(“”).find(b=>phrase.includes(b))
}
log(hasNoneLetters('Abc','the短语'))
log(hasNoneLetters('Abc','the短语'))
log(hasNoneLetters('abc','thephrase'))
如果没有匹配的字母,它应该返回true)修复了它。只是需要交换返回值。如果没有匹配的字母,它应该返回true)修复了它。两个都是字符串:@param{string}blacklist@param{string}phrase
两个都是字符串:@param{string}blacklist@param{string}phrase
如果黑名单是作为字符串提供的,我认为需要将其拆分为一个数组。将所有内容都设置为小写或大写以比较值。希望这会有所帮助。我认为如果黑名单是以字符串形式提供的,则需要将其拆分为一个数组。将所有内容都设置为小写或大写以比较值。希望这能有所帮助。非常感谢你,对不起,我是Noob,这对我来说很难理解ES6,因为这是到目前为止唯一包含案例不敏感的答案。但是,有一些重要的信息与此相关。@JessicaBulldog我添加了与您的代码相似的版本谢谢您非常匹配,对不起,我不是Oob,这对我来说很难理解ES6,因为这是目前为止唯一包含案例不敏感的答案。不过,有一些重要信息与此相关。@JessicaBulldog我添加了与您的代码类似的版本