如何通过增量或减量值从数组中获取批处理数组值

时间:2015-06-27 06:16:21

标签: javascript arrays

我有一个数组,它包含一堆值。我希望slice数组增加count数字的值或减少count的值。

计数由nextprev按钮更新。当用户点击next计数增加时,用户点击prev按钮count减少。按批号使用此wan到slice数组值。

这是我的尝试:

var arr = [1,2,3,4,5,6,7,8,9];
var batch = 2;
var num = 2;
var total = arr.length;
var group = arr.slice(0, (batch % total));


var add = function (amount) {
     num = (num + total - 1 + amount) % total + (2)
     console.log(arr.slice((num-batch), (num % total)))
}

$('a').click(function (e) {
    var num = e.target.className == 'prev' ? -1 : 1;
    add(num);
})

console.log(group)

Live Demo

1 个答案:

答案 0 :(得分:2)

假设您一直在寻找大小为batch的分组,并希望环绕您的阵列,您可以这样做。

var add = function (amount) {
    num = ((num + batch * amount) % total + total) % total;

    var out = arr.slice(num, num + batch);
    if (out.length < batch) {
        out = out.concat( arr.slice(0, batch - out.length ) );
    }

    console.log(out);
}

请注意,JavaScript %不是大多数语言中的模运算符,而是余数运算符。不是让你进入[0,m - 1]范围,而是在保留符号(即-6 % 5 = -1)的同时进入范围[-m + 1,m - 1]。实现真模的一种简单方法是执行((n % m) + m) % m