我正在研究这个问题:
编写一个函数filterLongWords(),它接受一个单词数组和一个整数i,并返回比i长的单词数组。
我记下来了,除了某些原因,如果有一个单词只有一个字符长,它就不会被删除。有谁知道我做错了什么?谢谢。
function filterLongWords(i, array){
for (var x = 0; x<array.length; x++){
if (array[x].length <= i){
array.splice(x,x);
}
}
console.log(array)
}
var wordArray = ["i", "am", "longer", "than", "one"];
filterLongWords(2, wordArray);
答案 0 :(得分:5)
这里有几个问题。
首先,splice
的参数为(index, number of items)
,因此您需要致电
array.splice(x,1)
其次,当您从数组中删除某个项目时,该数组会缩短,但x
仍然会前进(有效地跳过下一个项目)。从阵列中删除项目后,您可以使用x--;
对此进行抵消。
function filterLongWords(i, array){
for (var x = 0; x<array.length; x++){
if (array[x].length <= i){
array.splice(x,1);
x--;
}
}
console.log(array)
}