【问题标题】:for loop ignoring word length of 1for循环忽略字长1
【发布时间】:2014-07-24 04:56:16
【问题描述】:

我正在研究这个问题:

编写一个函数 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);

【问题讨论】:

    标签: for-loop splice


    【解决方案1】:

    这里有几个问题。

    首先,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)
    }
    

    【讨论】:

    • 在您的示例中,您没有将其更改为 array.splice(x,1)
    猜你喜欢
    • 1970-01-01
    • 2017-04-29
    • 2021-12-19
    • 1970-01-01
    • 2011-10-29
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多