簡體   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