<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);
}
}
```