JANコードチェッカー
JANコードが正しいかをチェックするjavascriptコード
http://www.dsri.jp/jan/check_digit.htmを参考
var Jan = function() { this.arrayJan = []; this.isJanCode = function(jancode){ var evenNum = 0; var oddNum = 0; var chkDigSeed = 0; var chkDig = 0; //arrayに格納 this.setArray(jancode); //1:偶数位置の数字を加算 evenNum = this.addEven(); //2:1の結果を3倍に evenNum *= 3; //3:すべての奇数位置の数字を加算 oddNum = this.addOdd(); //4:2の答えと3の答えを加算(121) chkDigSeed = evenNum + oddNum; //5:4の答えの下一桁の数字を10から引く chkDig = this.makeCheckDigit(chkDigSeed); //janコードの末尾と照合 return this.compDigit(chkDig); }; //チェックデジットしやすいように配列を整形 this.setArray = function(jancode){ for(i=0;i<jancode.length;i++){ this.arrayJan[i] = jancode.substr(i,1); } this.arrayJan.push("null"); //配列を反転(チェックデジットの仕様に則る) this.arrayJan.reverse(); }; //すべての偶数位置の数字を加算 this.addEven = function(){ var result = 0; for(i=0;i<this.arrayJan.length;i++){ if(i%2 == 0 && i != 0){ result += parseInt(this.arrayJan[i]); } } return result; }; //すべての偶数位置の数字を加算 this.addOdd = function(){ var result =0; for(i=0;i<this.arrayJan.length;i++){ if(i%2 == 1 && i != 1){ result += parseInt(this.arrayJan[i]); } } return result; }; //チェックデジットを生成 this.makeCheckDigit = function(chkDigSeed){ var result; var strChkDigSeed = ""+chkDigSeed; var theOne = parseInt(strChkDigSeed.substr(strChkDigSeed.length-1,1)); result = 10 - theOne; return ( theOne ? result : 0 ); }; //JANコードとチェックデジットの比較 this.compDigit = function(chkDig){ if(this.arrayJan[1] == ""+chkDig){ return true; }else{ return false; } }; }; var jan = new Jan(); alert(jan.isJanCode("4569951116179"));