我正在尝试编写一个简单的程序来删除字符串中的元音和空格。下面的代码有一些错误的行为,我无法解释。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. –