Я просто искал javascript, я просто пытаюсь сравнить 2 массива и удалить все английские гласные из строки, чтобы позже вернуть его без гласных.
Итерация для j
представляющая массив гласных (arr
), прекращается, но я хочу, чтобы она повторялась на каждой итерации для i
.
Вот мой базовый код:
let sentence = 'eitan was here';
function disemvowel(str) {
let arr = ['a', 'e', 'i', 'o', 'u'];
let letters = str.split('');
let i, j;
for (i = 0, j = 0; i < letters.length && j < arr.length;) {
console.log('counter: i = ' + i + ', j = ' + j + ', ' + letters[i] + ' vs ' + arr[j] + 'and letters: ' + letters);
if (letters[i] == arr[j]) {
if (letters[i] == ' ') {
i++;
}
console.log('IF stopped here: ' + letters[i] + ' at i: ' + i + ', ' + arr[j] + ' at j: ' + j);
letters.splice(i, 1);
//console.log('letters after splice: '+ letters);
i++;
} else {
console.log('ELSE stopped here: ' + letters[i] + ' at i: ' + i + ', ' + arr[j] + ' at j: ' + j);
j++;
}
}
return letters;
}
console.log('letters are: ', disemvowel(sentence));
j
для времени выполнения и краткости.
sentence = 'eitan was here';
function disemvowel(str){
arr = ['a','e','i','o','u'];
arr.forEach((itm)=>{
var re = new RegExp(itm,'g');
str = str.replace(re,'');
})
return str;
}
console.log(disemvowel(sentence));
Вам не нужно зацикливаться, чтобы удалить гласные из строки. Лучший способ добиться этого - использовать класс символов в replace()
как это
let sentence = 'eitan was here';
sentence = sentence .replace(/[aeiou]/g,'');
Вы также можете использовать оператор OR (|), как это
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>