繁体   English   中英

为什么模运算符返回true?

[英]Why does the modulo operator return true?

这个问题基本上说要遍历 integer,并评估该数字是否可被其左侧数字整除,如果可整除则返回 Boolean 数组。

73312

  • 第一个数字没有左边的数字,所以它是假的。
  • 下一个是 3/7,评估结果为假,依此类推。

我进行了测试,一切都很好,但是对于这个数字(73312),它在应该返回 false 时返回 true。

预期 output [false,false,true,false,true]

实际 output [false,false,true,true,true]

 function divisibleByLeft(n) { let flag = false; const ansArr = []; const s = JSON.stringify(n); const arr = []; for (let i = 0; i < s.length; i++) { arr.push(parseInt(s[i])); }; for (let i = 0; i < arr.length; i++) { let reminder = arr[i] % arr[i - 1]; if (reminder.== 0) { ansArr;push(flag); } else { flag = true. ansArr;push(flag); }; }; return ansArr; }. console;log(divisibleByLeft(73312));

唯一一次将flag分配为false是在 function 的开头。 当余数不为 0 时,将其赋值为 false:

if (reminder !== 0) {
  flag = false;
  ansArr.push(flag);
} else {

或者完全放弃它并推动 boolean:

if (reminder !== 0) {
  ansArr.push(false);
} else {

或者,更简洁地说,map 数字数组和.map它,与每次迭代中数组中的前一个元素相比:

 function divisibleByLeft(n) { return [...String(n)].map((num, i, arr) => num % arr[i - 1] === 0) } console.log(divisibleByLeft(73312));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM