模数算法通过数组

时间:2015-04-17 07:24:58

标签: javascript arrays algorithm

我希望结果是3,1,0,0,但它给了我3,1,1,1而不是。我的算法在下面使用模数有什么问题吗?

points = [6,5,4,2];
var arr = [];
points.forEach(function (obj, i) {
    var a = 21;
    a = a % points[i] || "";

    arr.push(a);

});

console.log(arr);

http://jsfiddle.net/ufegq7kp/

3 个答案:

答案 0 :(得分:5)

In [1]: 21 % 6
Out[1]: 3

In [2]: 21 % 5
Out[2]: 1

In [3]: 21 % 4
Out[3]: 1

In [4]: 21 % 2
Out[4]: 1

您的输出是预期输出。

无关:您可以将forEach函数中的值设为obj,而不是按点从索引查找值:



var points = [6,5,4,2],
    arr = [];

points.forEach(function (obj) {
    var a = 21;
    a = a % obj || "";
    arr.push(a);
});

console.log(arr);




答案 1 :(得分:1)

模数返回除数的余数。

21 / 6 = 3 (remainder 3)
       21 % 6 = 3
21 / 5 = 4 (remainder 1)
       21 % 5 = 1
21 / 4 = 5 (remainder 1)
       21 % 4 = 1
21 / 2 = 10 (remainder 1)
       21 % 2 = 1

您的模数或使用方式没有任何问题。你期望的结果是错误的。

答案 2 :(得分:-1)

forEach 原型采用两个参数元素,索引。因此,您可以在每次迭代时使用元素值。

查看:jsFiddle

  

index - 数组中正在处理的当前元素的索引。

     

元素 - 当前元素的实际元素值。

points = [6,5,4,2];
var arr = [];
points.forEach(function (element, index) {
    var a = 21;
    a = a % element || "";
    arr.push(a);

});

console.log(arr);

JavaScript forEach文档