我正在嘗試編寫一個簡單的程序來刪除字符串中的元音和空格。下面的代碼有一些錯誤的行爲,我無法解釋。JavaScript .forEach()和.splice()不能按預期方式工作
var vowels, testString, splitString, disemvoweled;
vowels = ['a', 'e', 'i', 'o', 'u'];
testString = 'the quick brown fox jumped over the lazy dog';
splitString = testString.split('');
splitString.forEach(function (char) {
vowels.forEach(function (vowel) {
if (char === vowel || char === ' ') {
splitString.splice(splitString.indexOf(char), 1);
}
});
});
disemvoweled = splitString.toString();
console.log(disemvoweled); // 't,h,q,i,c,k,b,r,w,n,f,x,j,m,p,d,v,r,t,h,l,z,y,d'
在上面返回的字符串,你將在第4位看到我。此外,g對於狗未被包括在結果中。顯然,有些東西並沒有像預期的那樣工作。有人可以解釋爲什麼會這樣嗎?
'焦炭=== vowel'應該是:'vowel.indexOf(焦炭)= -1 //在元音array' – andlrc
我想指出你的這個運行時間是n^2。它可以及時完成:N。但它與手邊的問題無關。 – Fallenreaper
@Fallenreaper你能詳細說明一下嗎?我不熟悉n^2與N. –