Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.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/14.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
如何使用Every()在Javascript中返回新数组?_Javascript_Arrays - Fatal编程技术网

如何使用Every()在Javascript中返回新数组?

如何使用Every()在Javascript中返回新数组?,javascript,arrays,Javascript,Arrays,我尝试使用Every()将一个数组与另一个数组进行筛选,因为Every()循环通过一个数组,并在返回false时停止。但是,我试图让它从另一个数组返回新数组,并在它为false时停止 例如,我有这个单词“chance”和这个数组元音=[“a”,“e”,“I”,“o”,“u”]。因此,我想将“chance”中的每个字母与这个元音数组匹配,并提取“ch”,如果“chance”中的“a”与元音数组匹配,则停止 这是我的密码 function extract(str) { var vowels =

我尝试使用Every()将一个数组与另一个数组进行筛选,因为Every()循环通过一个数组,并在返回false时停止。但是,我试图让它从另一个数组返回新数组,并在它为false时停止

例如,我有这个单词“chance”和这个数组元音=[“a”,“e”,“I”,“o”,“u”]。因此,我想将“chance”中的每个字母与这个元音数组匹配,并提取“ch”,如果“chance”中的“a”与元音数组匹配,则停止

这是我的密码

function extract(str) {

  var vowels = ["a", "e", "i", "o", "u"];
  var word = str.split("");
  var newletters = [];
  var firstletter = str[0];

  for (var i = 0; i <= vowels.length; i++) {
    if (firstletter !== vowels[i]) {
      word.every(function(letter){
        if (letter.indexOf(vowels[i]) === -1 ){
        return newletters.push(letter);
        } else {
        return false;
        }
      })

    }
  }

  //return str;
}

console.log(extract("chance"));
函数提取(str){
可变元音=[“a”、“e”、“i”、“o”、“u”];
var word=str.split(“”);
var newlets=[];
var firstletter=str[0];
对于(var i=0;i您不能这样做。
each()
函数用于为每个测试元素返回一个
布尔值。
但在它中,您可以在
newletters
数组中添加字母,然后返回
true

如果元音匹配,只需返回
false
即可结束
every()
函数。 这样,在处理结束时,
newletters
将根据需要进行赋值

 for (var i = 0; i <= vowels.length; i++) {
    if (firstletter !== vowels[i]) {
      word.every(function(letter){
        if (letter.indexOf(vowels[i]) === -1 ){
            newletters.push(letter);
            return true;
         }             
         return false;            
      })

    }
  }

for(var i=0;i您可以连接元音并在正则表达式中使用生成的字符串:

函数提取(str){
可变元音=[“a”、“e”、“i”、“o”、“u”];
var regex=new RegExp(“(.*?[”+元音.join(“”+“]);
if(str.match(regex)!=null&&str!=“”){
console.log(str.match(regex)[1]);
//newlets.push(str.match(regex)[1]);
}
}

每一个都返回一个布尔值-你不能改变一个方法是如何工作的-如何使用过滤器或映射来代替?是的,我确实考虑过使用每个数组中除过滤器循环的过滤器。当它返回false时,我希望它停止循环……为什么不使用正则表达式?<代码> var结果= STR.Matt(/^ [^ aiou] */)]〔0〕
。为什么不使用简单的for循环呢?Y也是一个元音,顺便说一句:)关于:
“tv”
?两个
提取(“”;
(空字符串)和
提取(“rythm”);
(无元音)都会抛出错误。