Właśnie bawiłem się JavaScript, staram się tylko porównać 2 tablicy i usunąć wszystkie angielskie samogłoski z ciągu, aby później zwrócił go bez samogłosek.

Iteracja dla j reprezentująca tablicę samogłosek (arr) zatrzymuje się na długości, ale chcę, aby ponownie pętla na każdej iteracji dla i.

Oto mój podstawowy kod:

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
1
clusterBuddy 29 czerwiec 2017, 10:13

3 odpowiedzi

Najlepsza odpowiedź
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));
1
dam2299 29 czerwiec 2017, 07:39

Musisz zresetować J do 0. Również nie można połączyć tej samej tablicy, którą zapętlasz się za pomocą tablicy litery I.E w tym przypadku.

<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>
0
Mahesh Hegde 29 czerwiec 2017, 08:39

Nie musisz płynąć, aby usunąć samogłoski z ciągu. Najlepszym sposobem na osiągnięcie tego jest użycie klasy znaków w replace() w ten sposób

let sentence = 'eitan was here';
sentence  = sentence .replace(/[aeiou]/g,'');

Możesz także użyć lub operatora (|) w ten sposób

sentence = sentence.replace(/a|e|i|o|u/g,''); 
3
Ankit Agarwal 29 czerwiec 2017, 07:18