【问题标题】:Loop through array with set intervals以设定的间隔循环遍历数组
【发布时间】:2016-02-09 23:09:11
【问题描述】:

假设您有一个简单的数组,例如

var someArray = ["1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9"];

像这样遍历数组

for (var i = 0; i < someArray.length; i++) {
        console.log(someArray[i]);
    };

在控制台中给出这个......

1,2,3,4,5,6,7,8,9

....但是有没有一种方法可以遍历数组以便只选择第 n 个项目?例如,第 3 个值会在控制台中给出

1, 4, 7, ........

【问题讨论】:

    标签: jquery arrays sorting


    【解决方案1】:

    当然。

    您的 for 迭代器实际上由 3 个部分组成。声明、条件和增量。

    increment 是第三个参数,很可能您一直只是将其视为 i++,但它可以是任何值。在您的示例中,您希望将 i 增加 3,因此 i += 3。

    for (var i = 0; i < someArray.length; i += 3) {
        console.log(someArray[i]);
    };
    

    【讨论】:

    • 非常感谢@Scottie。是的,我一直将 for 迭代器的增量部分视为 i++。我猜它会是这么简单的事情,但从不知道它可能是任何东西
    【解决方案2】:

    有一种简单的技术涉及使用模运算符。如果您不希望更改 i 的增量,可以使用以下循环来实现:

    var someArray = ["1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9"];
    
    for (var i = 0; i < someArray.length; i++) {
        if( i % 3 === 0 ){
             console.log(someArray[i]);
        }
    }
    

    如果您要对每个元素执行其他操作,但还想对第 n 个元素执行特定操作,您可能希望这样做。您可以将我示例中的数字 3 替换为您喜欢的任何数字来表示第 n 个元素值。

    【讨论】:

    • 感谢@vullnetyy 完美运行! if 条件实际上意味着什么?如果 i = 0 但增加 3??
    • 它将 i 除以 3 并检查它是否是 3 的倍数。例如 6 % 3 等于 0,因为在整数除法中 3*2+0=6 但 7 是 3*2+1 =0 所以 7 % 3 实际上等于 1。
    • @DMH 从技术上讲,模运算符输出两个数字相除的余数。所以如果你做 2 % 3 那么结果是 2 因为 0*3 + 2 = 2。这里的 +2 是余数,它最终是运算的结果。
    • @vullnetyy 我在解释条件的含义,知道模运算符的结果是三年级数学,我认为不需要解释。此外,我相信很明显,如果您将 2 除以 3 在整数除法中,余数将是结果,同样是三年级数学。
    猜你喜欢
    • 2021-07-22
    • 2014-06-04
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 2018-04-01
    • 2013-12-16
    相关资源
    最近更新 更多