我正在研究这个问题:
编写一个函数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);
Run Code Online (Sandbox Code Playgroud)
这里有几个问题.
首先,参数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)
}
Run Code Online (Sandbox Code Playgroud)