余数运算符 ,返回第一个操作数除以第二个操作数时的余数 它有时也称为 模运算符 ,尽管 从技术上讲,模运算符是一个不同的概念

余数运算符的一个方便类比是购买东西:如果小部件花费 3 美元而您有 7 美元,那么您最多可以购买 2 个小部件。 然后你将剩下 1 美元。 余数运算符 a % b 如果您购买尽可能多的小部件,则返回剩余的东西 a 美元和小部件成本 b 美元。

7 % 3; // 1

用英语讲, a % b 通常被称为 a mod b 。余数运算符有几个巧妙的用途:

一个数字是奇数还是偶数?

一个整数 n即使 它可以被 2 整除。余数运算符返回 0,如果 a 可以被 b,换句话说,检查一个数是否为偶数等同于检查是否 n % 2 === 0

function isEven(n) {
  return n % 2 === 0;
}

isEven(5); // false
isEven(7.6); // false
isEven(8); // true

相似地, n奇数 当且仅当 n % 2 === 1

function isOdd(n) {
  return n % 2 === 0;
}

isEven(5); // false
isEven(7.6); // false
isEven(8); // true

获取 小数部分

你有一个号码 2.5 并且您只想获得小数点后的数字部分 0.5, 最简洁的方法是取数字 mod 1。

function getFractionalPart(n) {
  return n % 1;
}

getFractionalPart(2.5); // 0.5

将分钟转换为小时

余数运算符对于您不想引入繁重的库的基本日期算术很方便。 例如如果给你一个数字 n 表示分钟数(可能超过 60 分钟)并且您想将其转换为小时和分钟,您可以执行以下操作:

const minutesToHoursAndMinutes = n => ({
  hours: Math.floor(n / 60),
  minutes: n % 60
});

minutesToHoursAndMinutes(59); // { hours: 0, minutes: 59 }
minutesToHoursAndMinutes(62); // { hours: 1, minutes: 2 }
minutesToHoursAndMinutes(123); // { hours: 2, minutes: 3 }

余数与模数

模数是一个相关的概念,但处理负数的方式不同。 例如 -21 % 5 === -1,因为余数总是取左数的符号。 但是真正的模运算符总是返回一个正值,因此 21 modulo 5 等于 4。实际上,您不太可能对负值使用余数运算符,许多 JavaScript 开发人员并没有意识到其中的区别。

© 版权声明
评论 抢沙发

请登录后发表评论