已經瞭解規則,接著就開始製作身分證製造機的作業。在開始前,先做個檢查機制,檢查我們的身分證號碼是否正確,也就是 TDD 的精神,這樣才能確認我們的身分證製造機產出的身分證是正確的。
首先建立一個 JavaScript,用來檢查身份證,這邊取名為 IDCreater.js
。裡面存放著判斷各種的功能,這些功能有檢查首碼、第二碼和最後的檢查碼。
checkLength()
用來檢查長度,檢查長度是否十碼(),並且 checkNumber()
檢查後面的九碼是否為數字。
export function checkBasic(code) {
let result =
checkLength(code) &&
checkDigit(code) &&
checkGender(parseInt(code.substring(1, 2)));
console.log(`check basic: ${result}`);
return result;
}
function checkLength(code) {
let r = false;
if (length(code) === 10) r = true;
console.log("check legnth: " + r);
return r;
}
function checkDigit(code) {
const testStr = code.substring(1);
for (let i = 0; i < testStr.length; i++) {
if (isNaN(testStr.charAt(i))) {
console.log(
`Check digit false. ${testStr.charAt(i)} is ${!isNaN(
testStr.charAt(i)
)}`
);
return false;
}
}
return true;
}
checkPlace()
用來檢查區域碼,這個區域碼是否在我們的清單中。
function checkPlace(code) {
const cityDic = {
A: "10", //臺北市
B: "11", //臺中市
C: "12", //基隆市
D: "13", //臺南市
E: "14", //高雄市
F: "15", //新北市
G: "16", //宜蘭縣
H: "17", //桃園市
I: "34", //嘉義市
J: "18", //新竹縣
K: "19", //苗栗縣
M: "21", //南投縣
N: "22", //彰化縣
O: "35", //新竹市
P: "23", //雲林縣
Q: "24", //嘉義縣
T: "27", //屏東縣
U: "28", //花蓮縣
V: "29", //臺東縣
W: "32", //金門縣
X: "30", //澎湖縣
Z: "33", //連江縣
L: "20", //臺中縣
R: "25", //臺南縣
S: "26", //高雄縣
Y: "31", //陽明山管理局
};
if (code in cityDic) {
console.log("check place: " + code + "=" + cityDic[code]);
return cityDic[code];
}
console.log("check place(error): " + code + "=0");
return 0;
}
checkGender()
用來檢查性別碼,檢查否為:1、2、8、9。
function checkGender(code) {
const genderArr = [
1, //男
2, //女
8, //外來人口-男
9, //外來人口-女
];
if (genderArr.includes(code)) {
console.log("check Gender: true");
return true;
}
console.log("check Gender: false");
return false;
}
checkCkDigit()
用來檢查驗證碼,這邊先跳過,留到下次再說,因為有點複雜。
發現只要有驗證碼都會比較複雜,要花點時間處理!
所以就留到明天再解吧~