genelde tc kimlik numaraları sadece tutarlı mı diye denetlenir, gerçek bir kişi mi veya kim diye kontrol edildiğini sanmıyorum. amaç uydurma kimlik numarası belirtilmesini önlemek, tabi aynı mantıkla uydurma tc de yapılabilir.
function tcKimlikDogrula(tc) {
return /^[1-9]\d{10}$/.test(tc) &&
(7 * (+tc[0] + +tc[2] + +tc[4] + +tc[6] + +tc[8]) - (+tc[1] + +tc[3] + +tc[5] + +tc[7])) % 10 === +tc[9] &&
[...tc].slice(0, 10).reduce((sum, num) => sum + +num, 0) % 10 === +tc[10];
}
console.log(tcKimlikDogrula("10000000146")); // true veya false döner