我尝试检查一个单词(wordToCheck)是否仅包含来自数组(letters)的字母,并且是否也仅包含该单词在数组中的每个字母(与其在数组中的出现次数一样多)(或不多于它们在数组中的次数)实际上是在数组内部。

以下是所需函数应返回的示例:

checkIfWordContainsLetters("google", ["a","o","o","g","g","l","e","x"]) === true
checkIfWordContainsLetters("google", ["a","o","g","g","l","e","x"]) === false


如何使此代码起作用?

function checkIfWordContainsLetters(wordToCheck, letters) {
    var lettersToString = letters.toString();
    var lettersTrimmed = lettersToString.replace(/,/gi, "?");
    var regEx = new RegExp(lettersTrimmed, "gi");
    if (wordToCheck.match(regEx)!== null) {
        return true;
    }
    else return false;
}

最佳答案

只要它不是长字符串的最佳解决方案,使用一些聪明的正则表达式肯定会更好,则它适用于没有空格的短字符串。

function checkIfWordContainsLetters(word, letters){
  word = word.toLowerCase().split('');

  for(var i = 0; i < letters.length; i++) {
    var index = word.indexOf( letters[i].toLowerCase() );
    if( index  !== -1 ) {
      // if word contains that letter, remove it
      word.splice( index , 1 );
      // if words length is 0, return true
      if( !word.length ) return true;
    }
  }
  return false;

}
checkIfWordContainsLetters("google", ["a","o","o","g","g","l","e","x"]); // returns true
checkIfWordContainsLetters("google", ["a","o","g","g","l","e","x"]); // returns false

10-08 09:44
查看更多