<分区>
我正在使用 forEach() 遍历字符串数组,并测试每个元素的长度以确定它是偶数还是奇数。如果字符串的长度是偶数,则使用 splice() 将其删除。
我的输入和输出如下所示,正如您所看到的,即使(我认为)我的条件是正确的,在我的返回数组中,我仍然得到一个偶数,两个字符的单词——它应该被拼接出来。
代码:
function filterOddLengthWords(words) {
words.forEach(function(element, index) {
if (element.length%2===0) {
words.splice(index, 1);
}
})
return words;
}
var output = filterOddLengthWords(['there', 'it', 'is', 'now']);
console.log(output); // --> [ 'there', 'is', 'now' ]
我知道错误在哪里,但我不知道如何弥补。我可以通过在函数开头创建一个空数组来重写它,然后根据相反的条件测试每个元素,使用 push() 方法将每个正数添加到空数组中。但是,这效率更低,我很想知道我的方法是否可行。提前感谢您的回答。