这个问题在这里已有答案:
我正在尝试实现一个函数,它检查一个单词中是否存在字母列表。
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;
}
使用地图都比较优雅。困扰我的是,如果我发现没有信件,我就无法从第二张地图返回。所以我必须使用一个变量并返回它。这是代码中的两个额外行。
有没有办法优化这段代码?
const wordHasLetters = (word,letters) => letters.every(letter => word.includes(letter));
或使用普通的旧循环:
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;
}
或者使用Set:
function wordHasLetters(word, letters){
const set = new Set(letters);
for(var char of word){
set.delete(char);
if(!set.size) return true;
}
return false;
}