使用javascript数组跳过take方法

Jam*_*uth 9 javascript jquery

有没有方法可以跳过特定数量的对象并从javascript中的数组中获取一定数量的对象?

基本上我正在寻找的模式就是这个.

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

第一循环:

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

第二循环:

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

第三循环:

回到开头,所以再次返回0到3的对象.

广告无限.....

如果可能的话,我很乐意看到一个基于jquery的解决方案,但我也非常喜欢原始的javascript实现,因为我渴望学习.

干杯.

Fel*_*ing 15

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

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;
    };
};
Run Code Online (Sandbox Code Playgroud)

然后你可以称之为:

var next = iterator(arr, 3);
next(); // gives the first three
next(); // gives the next three.
//etc.
Run Code Online (Sandbox Code Playgroud)

DEMO

就这种形式而言,最后一次迭代可能会返回更少的元素.您也可以扩展它并使该函数接受变量步和不同的启动参数.

如果你想环绕,就好像只剩下两个元素,从头开始采用元素,那么它会变得更复杂;)

更新:换行将是这样的:

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;
    };
};
Run Code Online (Sandbox Code Playgroud)

DEMO


Bra*_*tie 11

我想你想要Array.sliceArray.splice.

var ary = [0,1,2,3,4,5,6,7];
alert(ary.splice(0,3).join(','));
Run Code Online (Sandbox Code Playgroud)

  • 请注意,splice将从原始数组中删除元素.切片不会. (4认同)

Mik*_*ark 5

看看这个。array.slice()

http://www.w3schools.com/jsref/jsref_slice_array.asp

  • 一般来说,MDC (https://developer.mozilla.org/en/javascript) 是一个更好的来源。 (3认同)
  • 强制性的“Eww,w3fools”。(我真的不在乎,但我想我会在下一个人之前提到它并且不那么贬义) (2认同)