如何解决为什么模运算符返回 true?
这个问题基本上是说迭代一个整数,并评估这个数字是否能被它的左边数整除,如果它是可整除的,则返回一个布尔数组。
73312
我运行了测试,一切都很好,但是有了这个数字 (73312),它在应该返回 false 时返回 true。
预期输出 [false,false,true,true]
实际输出[false,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
的唯一时间是在函数的开头。当余数也不为 0 时,将其赋值为 false:
if (reminder !== 0) {
flag = false;
ansArr.push(flag);
} else {
或者完全抛弃它并推送布尔值:
if (reminder !== 0) {
ansArr.push(false);
} else {
或者,更简洁地说,将数字映射到一个数字数组并 .map
它,在每次迭代时与数组中的前一个元素进行比较:
function divisibleByLeft(n) {
return [...String(n)].map((num,i,arr) => num % arr[i - 1] === 0)
}
console.log(divisibleByLeft(73312));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。