javascript - 有没有办法从 JavaScript 中的 map 包含 block 返回?

标签 javascript return

我正在尝试实现一个函数来检查字母列表是否全部出现在单词中。

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/

相关文章:

Javascript:将用户输入分配为变量

javascript - 为什么我的函数 "donethingy"被视为 "not declared"?

java - Eclipse 建议修复警告 "finally block does not complete normally"

从多个表返回所有列的函数 (PostgreSQL)

c - 在 BEA Tuxedo 中,在 tpreturn 之后调用 tpfree 有意义吗?

javascript - 在javascript中使用正则表达式获取多个结果

javascript - React Native,<Image>不能包含子代

Javascript:奇怪的比较行为

java - 如何在java中检查 boolean 方法的返回值

java - java中的try-with-resources和return语句