我对javascript一无所知。
假设字符串“3005600008000”,我需要找到一种方法将奇数位数中的所有数字乘以2,将偶数位数中的数字乘以1.
这个伪代码我为奇数写了输出(我认为)为TRUE(即“0”),
var camid;
var LN= camid.length;
var mychar = camid.charAt(LN%2);
var arr = new Array(camid);
for(var i=0; i<arr.length; i++) {
var value = arr[i]%2;
Alert(i =" "+value);
}
我不确定这是对的:我不相信它是在奇数(以及后来的偶数)位置分块/分割字符串。
我是怎么做到的?你能提供一些提示吗?
/=================================================/
我的目标是在网页中实现智能卡ID号的验证例程。
我试图实现的逻辑如下:
·1)从左边开始,将奇数位置的所有数字乘以2,偶数位置的数字乘以1.
·2)如果将单个数字乘以2的结果产生两位数字(例如“7 x 2 = 14”),则将结果的数字加在一起以产生新的单个数字结果(“1 + 4 = 5”)。
·3)将所有单位数结果加在一起。
·4)校验位是您必须添加到此结果中的金额才能达到下一个最高倍数10。例如,如果步骤#3中的总和为22,要达到下一个最高倍数10(即30),则必须将8添加到22.因此校验位为8。
这就是整个想法。谷歌搜索智能卡ID验证没有返回任何内容,我开始认为这在Javascript中做到这一点有点过分了......
欢迎任何输入。
答案 0 :(得分:2)
var theArray = camid.split(''); // create an array entry for each digit in camid
var size = theArray.length, i, eachValue;
for(i = 0; i < size; i++) { // iterate over each digit
eachValue = parseInt(theArray[i], 10); // test each string digit for an integer
if(!isNaN(eachValue)) {
alert((eachValue % 2) ? eachValue * 2 : eachValue); // if mod outputs 1 / true (due to odd number) multiply the value by 2. If mod outputs 0 / false output value
}
}
答案 1 :(得分:2)
我发现我想要做的就是称为Luhn验证。
我在这里找到了算法。
http://sites.google.com/site/abapexamples/javascript/luhn-validation
感谢您抽出宝贵时间帮助我。非常感谢。
答案 2 :(得分:1)
看起来您可能正在构建Luhn验证。如果是这样,请注意你需要从RIGHT计算奇数/偶数而不是字符串的左边。