javascript循环没有在第二个计数器上重新迭代

javascript循环没有在第二个计数器上重新迭代,javascript,loops,Javascript,Loops,我刚刚摆弄了javascript,我只是尝试比较两个数组,从字符串中删除所有英语元音,然后返回没有元音的字符串 表示元音数组arr的j的迭代在长度上停止,但我希望它在I的每次迭代中都重新循环 这是我的基本代码: 让句子=‘eitan在这里’; 函数disemvowelstr{ 设arr=['a','e','i','o','u']; 让字母=str.split; 让我,j; 对于i=0,j=0;i

我刚刚摆弄了javascript,我只是尝试比较两个数组,从字符串中删除所有英语元音,然后返回没有元音的字符串

表示元音数组arr的j的迭代在长度上停止,但我希望它在I的每次迭代中都重新循环

这是我的基本代码:

让句子=‘eitan在这里’; 函数disemvowelstr{ 设arr=['a','e','i','o','u']; 让字母=str.split; 让我,j; 对于i=0,j=0;iconsole.log'letters:',dismvowelsence 不需要循环来删除字符串中的元音。实现这一点的最好方法是像这样在replace中使用character类

let sentence = 'eitan was here';
sentence  = sentence .replace(/[aeiou]/g,'');
sentence = sentence.replace(/a|e|i|o|u/g,''); 
您也可以像这样使用OR运算符

let sentence = 'eitan was here';
sentence  = sentence .replace(/[aeiou]/g,'');
sentence = sentence.replace(/a|e|i|o|u/g,''); 

不需要循环来删除字符串中的元音。实现这一点的最好方法是像这样在replace中使用character类

let sentence = 'eitan was here';
sentence  = sentence .replace(/[aeiou]/g,'');
sentence = sentence.replace(/a|e|i|o|u/g,''); 
您也可以像这样使用OR运算符

let sentence = 'eitan was here';
sentence  = sentence .replace(/[aeiou]/g,'');
sentence = sentence.replace(/a|e|i|o|u/g,''); 

您必须将j重置为0。此外,在本例中,不能拼接正在循环的同一数组,即字母数组

<script>
 let sentence = 'eitan was here';
 function disemvowel(str) {
  let arr = ['a', 'e', 'i', 'o', 'u'];
  let letters = str.split('');
  let output = [];
  let i,j;
 for (i=0,j=0; i<letters.length && j<arr.length;){
    if(letters[i] == arr[j]){
        j = 0;
        i++;
    }else{
        j++;
        if(j >= arr.length){
            output.push(letters[i]);
            i++;
            j = 0;
        }
     }
   }
  return output;
 }
 console.log('letters are: ', disemvowel(sentence));
</script>

您必须将j重置为0。此外,在本例中,不能拼接正在循环的同一数组,即字母数组

<script>
 let sentence = 'eitan was here';
 function disemvowel(str) {
  let arr = ['a', 'e', 'i', 'o', 'u'];
  let letters = str.split('');
  let output = [];
  let i,j;
 for (i=0,j=0; i<letters.length && j<arr.length;){
    if(letters[i] == arr[j]){
        j = 0;
        i++;
    }else{
        j++;
        if(j >= arr.length){
            output.push(letters[i]);
            i++;
            j = 0;
        }
     }
   }
  return output;
 }
 console.log('letters are: ', disemvowel(sentence));
</script>


我想避免在循环中创建循环。为什么,它们是一个强大的工具。@Teemu,没错,但我有一种刺痛的感觉,觉得这里没有必要,对吗?检查我的答案。这正是您所需要的。基本上,如果您要根据字符串检查数组,您必须始终创建一个循环。它是内部的还是外部的取决于您。@clusterBuddy无论您是在单次运行中还是在循环内循环中运行,您的运行时间都是线性的,因为一个循环元音one将始终有一个恒定的运行时间。微优化在这里是不必要的,您不会获得任何显著的性能改进。我想避免在循环中创建循环。为什么,它们是一个强大的工具。@Teemu,没错,但我有一种刺痛的感觉,在这里没有必要,对吗?检查我的答案。这正是您所需要的。基本上,如果您要根据字符串检查数组,您必须始终创建一个循环。它是内部的还是外部的取决于您。@clusterBuddy无论您是在单次运行中还是在循环内循环中运行,您的运行时间都是线性的,因为一个循环元音one将始终有一个恒定的运行时间。微优化在这里是不必要的,你不会获得任何显著的性能改进。答案很好,但我需要坚持for循环。请你标记它并投票,以便其他人知道它是一个正确的答案。我投票了,因为这是一个很好的答案,但它不能解决1循环问题,我希望j在每次迭代中都重新循环。好的,让我也来看看。答案很棒,但我需要坚持for循环。你能标记它并投票给其他人,让他们知道它是正确的答案吗。我投票给它,因为它是一个很好的答案,但它不能解决1循环的问题,我希望j在每次迭代中都能重新循环。好的,让我也来看看。谢谢,希望它能解决你使用一个循环的问题谢谢,希望它能解决你使用一个循环的问题