Javascript 通过数组的模算法

Javascript 通过数组的模算法,javascript,arrays,algorithm,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); 您的输出是预期的输出 不相关:您的forEach函数中的值已作为obj,而不是通过点的索引查找值:

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

您的输出是预期的输出

不相关:您的
forEach
函数中的值已作为
obj
,而不是通过点的索引查找值:

var点=[6,5,4,2],
arr=[];
points.forEach(功能(obj){
var a=21;
a=a%obj||;
arr.push(a);
});
控制台日志(arr)
您的输出是预期的输出

不相关:您的
forEach
函数中的值已作为
obj
,而不是通过点的索引查找值:

var点=[6,5,4,2],
arr=[];
points.forEach(功能(obj){
var a=21;
a=a%obj||;
arr.push(a);
});
控制台日志(arr)forEach原型采用两个参数元素,索引。所以您可以在每次迭代中使用元素值

视图:

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

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

JavaScript文档

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

视图:

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

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


JavaScript Doc

模数返回除法的剩余部分

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

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

模返回除法的剩余部分

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


你的模数或者你使用它的方式没有问题。你所期望的结果是错误的。

为什么你会期望'3,1,0,0',请解释清楚,3,1,1,1是你提供的数字的正确模数,我希望是这样的,因为在我得到第一个结果3之后,它将以5%3继续。为什么你希望'3,1,0,0'请清楚地解释3,1,1,1是你提供的数字的正确模数。我希望,因为在我得到第一个结果3后,它将以5%3继续。我的想法完全正确。JavaScript代码没有问题@aviatewong请回顾模运算符是如何工作的。我期望3,1,0,0,因为在我得到第一个结果3之后,它将继续以5%3计算。如何产生这个结果?你能解释为什么第二个运算是5%3吗?5是第二个数组项,当20%6=2时使用3;你能解释一下算法吗?从你目前提供的情况来看,第三次手术仍然无法确定。我的想法完全正确。JavaScript代码没有问题@aviatewong请回顾模运算符是如何工作的。我期望3,1,0,0,因为在我得到第一个结果3之后,它将继续以5%3计算。如何产生这个结果?你能解释为什么第二个运算是5%3吗?5是第二个数组项,当20%6=2时使用3;你能解释一下算法吗?根据您目前提供的信息,第三个操作仍然无法确定。请停止使用
标记突出显示您文章中的链接。这不是他们的目的。否决票已经在4月17日,也就是我发表评论的8天前。我没有给你任何反对票。请停止使用
标签突出显示你帖子中的链接。这不是他们的目的。否决票已经在4月17日,也就是我发表评论的8天前。我没有给你任何反对票。
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