<style> body, p, li, table { font-family: "Arial", "MingLiU" } h1, h2, h3, h4, h5, h6 { font-family: "Arial", "Microsoft YaHei" } h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { font-family: "Consolas" } pre, code { font-family: "MingLiU"; white-space: pre-wrap !important; word-break: break-all !important } .markdown-body pre { margin-bottom: 3px; padding: 10px 12px 6px 12px } .markdown-body h6 code { font-size: 9pt; font-family: 'Arial'; font-weight: normal; } .div-font { font-family: "Arial", "MingLiU" } pre.fit { margin-top: -1em; margin-bottom: 0.5em; } pre.inline { display: inline; padding: 0.2em 0; margin: 0; line-height: 1.5 } pre.inline::before, pre.inline::after { content: ""; display: inline-block; width: 0.3em } pre.code-block { margin: -1em 0em 0.25em; font-size: 0.85em } .markdown-body p+pre { margin-top: -12px; padding-top: 6px; margin-bottom: 0px } code.inpara { display: inline-block; margin: 0.5em 0; } span.spnote { font-size: 0.85em; color: #f43; } span.spnote.add { color: #43f; } span.spnote a { color: #912; } span.refsrc { display: block; margin-top: -0.5em; margin-left: 1.5em; font-size: 0.75em; font-family: "Arial", "MingLiU" } .sp { color: #FF4000 !important; } a.private-note { color: indianred } a.private-note:hover { color: firebrick } .date-notes { font-size: 9pt; font-style: italic; color: gray; margin-bottom: 1em } .lfis { margin-left: 1.5rem } .lfid { margin-left: 2rem } .smn { font-size: 0.8em; color: mediumslateblue; margin-right: 0.33em } .ano { font-size: 0.9em; color: #f43 } i.emph { color: #d66 } i.empho { color: #93c } .left-indent { margin-left: 2em } </style> # 運用 `do ... while` 剔除重複值(以 JavaScript 為例) ###### Tags: `do while` `Duplicate Value` `JavaScript` ### 取 10 次值,範圍為 0~9 不重複 ```javascript /* 已被取過的數放入 used 陣列 */ let used = []; /* 隨機值上限 */ let num = 10; /* 執行迴圈 */ for (let i = 0; i < 11; i++) { /* 初始化隨機取值變數 */ let k; /* 為避免 i 值超過隨機值時出現無限迴圈,必須限制 i 小於隨機數上限時才執行 do while */ if (i < num) { do { k = Math.floor(Math.random() * num); } while (used.includes(k)); /* 檢查 k 值 */ console.log(k); /* 將本次迴圈取出的 k 值存入 used 陣列 */ used.push(k); } } ``` ### 取 7 次值,範圍為 1~49 不重複 ```javascript /* 已被取過的數放入 used 陣列 */ let used = []; /* 隨機值上限 */ let num = 49; /* 執行迴圈 */ for (let i = 0; i < 7; i++) { /* 初始化隨機取值變數 */ let k; /* 為避免 i 值超過隨機值時出現無限迴圈,必須限制 i 小於隨機數上限時才執行 do while */ if (i < num) { do { k = Math.floor(Math.random() * num) + 1; } while (used.includes(k)); /* 檢查 k 值 */ console.log(k); /* 將本次迴圈取出的 k 值存入 used 陣列 */ used.push(k); } } ```