Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript数组跳过take方法_Javascript_Jquery - Fatal编程技术网

使用javascript数组跳过take方法

使用javascript数组跳过take方法,javascript,jquery,Javascript,Jquery,是否有方法可以跳过特定数量的对象,并从javascript中的数组中获取特定数量的对象 基本上,我在寻找的模式是这样的 假设我有一个8个对象的数组 第一个循环: 从数组中返回索引为0到3的对象 第二个循环: 从数组中返回索引为4到7的对象 第三个循环: 回到开头,再次返回0到3处的对象 无限 如果可能的话,我希望看到一个基于jquery的解决方案,但我也对原始javascript实现持开放态度,因为我渴望学习 干杯。我想你想要或者 看看这个。array.slice() 类似这样的东西(纯Java

是否有方法可以跳过特定数量的对象,并从javascript中的数组中获取特定数量的对象

基本上,我在寻找的模式是这样的

假设我有一个8个对象的数组

第一个循环:

从数组中返回索引为0到3的对象

第二个循环:

从数组中返回索引为4到7的对象

第三个循环

回到开头,再次返回0到3处的对象

无限

如果可能的话,我希望看到一个基于jquery的解决方案,但我也对原始javascript实现持开放态度,因为我渴望学习

干杯。

我想你想要或者


看看这个。array.slice()

类似这样的东西(纯JavaScript,不需要jQuery;):

如果使用这种形式,最后一次迭代可能会返回较少的元素。您还可以扩展它,使函数接受可变步长和不同的开始参数

如果您想从一开始就提取元素,比如只剩下两个元素,那么它会变得更加复杂;)

更新:环绕将是这样的:

var iterator = function(a, n) {
    var current = 0,
        l = a.length;
    return function() {
        end = current + n;
        var part = a.slice(current,end);
        if(end > l) {
            end = end % l;
            part = part.concat(a.slice(0, end));
        }
        current = end;
        return part;
    };
};

如果您有jQuery引用,jQuery有一个强制性的“Eww,w3doubs”。(我真的不在乎,但我想我应该在下一个家伙面前提一下,少一点贬损)@Brad ok。。那我为什么不使用这个网站呢?它有答案(我想有很多广告。)正如我提到的,我真的很冷漠,但有些人不想使用它。一般来说,MDC()是一个更好的源代码。slice(indexStart,indexEnd)返回页面数组。。。indexEnd参数不可用inclusive@FelixKling:+1用于清洁溶液和提醒我过去的日子。@Felix:坦白说。。。哇!难怪你有这么健康的名声!我想我知道发生了什么。。。。每次调用next()是否可以确保在到达数组的末尾后返回到数组的开头?关于你的更新。。。重新开始。。。是的,谢谢@贾梅苏斯:是的,它会工作,但我在代码中有一个小错误。修正了。。。。给我几秒钟时间做另一件事;)@菲利克斯:巫师。。。期待着您的光临!使用slice的解决方案似乎更容易被警告,拼接将从原始阵列中删除元素。切片不会。
var iterator = function(a, n) {
    var current = 0,
        l = a.length;
    return function() {
        end = current + n;
        var part = a.slice(current,end);
        current =  end < l ? end : 0;
        return part;
    };
};
var next = iterator(arr, 3);
next(); // gives the first three
next(); // gives the next three.
//etc.
var iterator = function(a, n) {
    var current = 0,
        l = a.length;
    return function() {
        end = current + n;
        var part = a.slice(current,end);
        if(end > l) {
            end = end % l;
            part = part.concat(a.slice(0, end));
        }
        current = end;
        return part;
    };
};