Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查字符串是否只包含数组中的字符?_Javascript_Arrays_Regex_String - Fatal编程技术网

Javascript 如何检查字符串是否只包含数组中的字符?

Javascript 如何检查字符串是否只包含数组中的字符?,javascript,arrays,regex,string,Javascript,Arrays,Regex,String,我试图检查一个单词(wordToCheck)是否只包含数组中的字母(letters),并且是否只包含数组中每个字母的频率(或者说不超过它们在数组中的次数),因为它实际上在数组中 下面是所需函数应返回的示例: checkIfWordContainsLetters("google", ["a","o","o","g","g","l","e","x"]) === true checkIfWordContainsLetters("google", ["a","o","g","g","l","e","x"

我试图检查一个单词(
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
函数checkIfWordContainsLetters(单词、字母){
word=word.toLowerCase().split(“”);
对于(变量i=0;i
只要它不是长字符串的最佳解决方案,而使用一些巧妙的正则表达式显然更好,它就适用于没有空格的短字符串

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
函数checkIfWordContainsLetters(单词、字母){
word=word.toLowerCase().split(“”);
对于(变量i=0;i
您可以使用此ES6功能:

函数checkIfWordContainsLetters(wordToCheck,字母){
return!letters.reduce((a,b)=>a.replace(b',),wordToCheck.toLowerCase()).length;
}
log(checkIfWordContainsLetters(“google”,“a”,“o”,“o”,“g”,“g”,“l”,“e”,“x”));

log(checkIfWordContainsLetters(“google”,“a”,“o”,“g”,“g”,“l”,“e”,“x”))您可以使用此ES6功能:

函数checkIfWordContainsLetters(wordToCheck,字母){
return!letters.reduce((a,b)=>a.replace(b',),wordToCheck.toLowerCase()).length;
}
log(checkIfWordContainsLetters(“google”,“a”,“o”,“o”,“g”,“g”,“l”,“e”,“x”));


log(checkIfWordContainsLetters(“google”,“a”,“o”,“g”,“g”,“l”,“e”,“x”))
为什么要替换(/,/gi,“?”)
:这似乎实现了一条您在问题中没有解释的规则。@trincot因为
Array.prototype.toString
使用逗号作为默认分隔符。噢,哇,是的,谢谢@MikeMcCaughan。非常奇怪的做事方式;-)javascript使用toString方法返回如下数组:“a,o,o,g,g,l”,所以我必须去掉所有的“,”。我想检查不区分大小写(因此我)。我还以为我会把它放进去?在每个字母之后,regExp都能正常工作。很抱歉没有提及此事。谢谢你的回答!好的,我也在答案中添加了不区分大小写的选项,假设您的字母数组已经全部用小写。为什么要替换(/,/gi,“?”):这似乎实现了一个您在问题中没有解释的规则。@trincot因为
array.prototype.toString
使用逗号作为默认分隔符。哦,哇,是的,谢谢@Mikemcaughan。非常奇怪的做事方式;-)javascript使用toString方法返回如下数组:“a,o,o,g,g,l”,所以我必须去掉所有的“,”。我想检查不区分大小写(因此我)。我还以为我会把它放进去?在每个字母之后,regExp都能正常工作。很抱歉没有提及此事。谢谢你的回答!好的,我也在答案中添加了不区分大小写的选项,假设你的字母数组已经全部用小写了。非常感谢你的回答!我马上在我的代码里查出来。谢谢你的回答!我会马上在我的代码里查出来的。太棒了!我也会在我的代码中尝试一下。这也是我的第一个想法,但后来我对所有这些regexp感到困惑,我想尝试一下。无论如何,太多了!希望它能帮助你:)到目前为止,它在我的代码中有效,但我必须做一些mre尝试,因为我的“解决方案”对某些人也有效。再次感谢您,我当然不会忘记在完成课程测试后立即将其标记为已回答。请向我展示我的代码失败的测试示例(如果有的话)。我在最近的编辑中还添加了案例不敏感,如果有案例的话。非常感谢!我也会在我的代码中尝试一下。这也是我的第一个想法,但后来我对所有这些regexp感到困惑,我想尝试一下。无论如何,太多了!希望它能帮助你:)到目前为止,它在我的代码中有效,但我必须做一些mre尝试,因为我的“解决方案”对某些人也有效。再次感谢您,我当然不会忘记在完成课程测试后立即将其标记为已回答。请向我展示我的代码失败的测试示例(如果有的话)。我还在最近的编辑中添加了案例不敏感,如果有案例的话。