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