我正在尝试实现一个函数来检查字母列表是否全部出现在单词中。
function wordHasLatters(word,letters){
let wordChars={};
word.split("").map(c=>wordChars[c]=true);
let ok=true;
letters.split("").map(l=>ok=ok&&(wordChars[l]!=undefined));
return ok;
}
使用 map 相对来说比较优雅。令我困扰的是,如果我发现没有字母,我就无法从第二张 map 返回。所以我必须使用一个变量并返回它。这是代码中额外的两行。
有没有办法优化这段代码?
最佳答案
const wordHasLetters = (word,letters) => letters.every(letter => word.includes(letter));
或者使用普通的旧 for 循环:
function wordHasLetters(word, letters){
const hash = {};
for(var char of word)
hash[char] = true;
for(var letter of letters)
if(!hash[letter]) return false;
return true;
}
或者使用集合:
function wordHasLetters(word, letters){
const set = new Set(letters);
for(var char of word){
set.delete(char);
if(!set.size) return true;
}
return false;
}
关于javascript - 有没有办法从 JavaScript 中的 map 包含 block 返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48014847/