【发布时间】:2017-12-05 16:42:43
【问题描述】:
我有两个功能:
function getDigitsSum(number) {
var sum = 0;
while (number > 0) {
sum += number % 10;
number = Math.floor(number / 10);
}
return sum;
}
function findNumbers() {
var results = [];
for (var i = 1; i <= 100; i++) {
if (getDigitsSum(i) == 8) {
results.push(i);
}
}
return results;
}
基本上,我显示的是 1 到 100 之间的数字,其数字之和等于 8。我完全理解第二个函数,但不了解第一个函数。
这个我不明白:
while (number > 0) {
sum += number % 10;
number = Math.floor(number / 10);
}
我的问题是:
模运算符在这部分代码中的作用是什么?我一直认为它只是返回一个操作数除以第二个操作数时剩下的余数。在这里,它似乎有一个我不知道的不同目的。为什么它会做它所做的事情以及如何做?
我了解
Math.floor函数应该做什么,但不了解(number / 10)在涉及其余代码时的含义。为什么number除以10?
如果有一个替代代码,当然会给出相同的结果,我会很高兴看到它。
【问题讨论】:
-
% 10基本上意味着:获取数字的最后一位。 2)1234->123->12->1 -
number % 10返回number的最右边数字。number / 10返回去掉最右边数字的数字。 -
另一种思考方式 - 你将如何计算数字的数字总和?
-
@OliverCharlesworth 首先我必须通过它有多少位来识别数字,然后定义每个数字的值,然后将它们相加。从表面上看,我们从最后一个最右边的数字开始,然后稳步走到开头。这是有道理的,我只是不确定它的某些方面是如何工作的,或者为什么这样做。它似乎比直接更迂回。
标签: javascript function modulo