我希望结果是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);
答案 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)