Luhn10 implementation in JS
JavaScript
var cc = [
'378282246310005',
'371449635398431',
'378734493671000',
'5610591081018250',
'30569309025904',
'38520000023237',
'6011111111111117',
'6011000990139424',
'3530111333300000',
'3566002020360505',
'5555555555554444',
'5105105105105100',
'4111111111111111',
'4012888888881881',
'4222222222222',
'76009244561',
'5019717010103742',
'6331101999990016',
];
var luhn_validate = function(imei){
return !/^\d+$/.test(imei) || (imei.split('').reduce(function(sum, d, n){
return n===(imei.length-1)? 0 : sum + parseInt((n%2)? d: [0,2,4,6,8,1,3,5,7,9][d]);
}, 0)) % 10 == 0;
};
for (var i=0; i<cc.length; i++)
if (!luhn_validate(cc[i]))
console.error(cc[i], 'test failed');