- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个基于下面这个“算法”的函数。我基本上需要在单个变量中传递一个字符串,然后让它运行下面的函数。
<小时/>校验位计算如下:每个位置分配一个值;对于数字0到9,这是数字的值,对于字母A到Z,这是10到35,对于填充符<,这是0。然后将每个位置的值乘以其权重;第一个位置的权重是 7,第二个位置的权重是 3,第三个位置的权重是 1,之后权重重复 7、3、1,依此类推。所有值相加,最终值除以 10 的余数就是校验位。
所以如果我通过了以下内容:
057607332
乘数基于字符串中的位置。第一个位置是 7,第二个位置是 3,第三个位置是 1,然后重复; 731、731 等
所以:
0 * 7
5 * 3
7 * 1
6 * 7
0 * 3
7 * 1
3 * 7
3 * 3
2 * 1
总共是 103。除以 10,得到 10.3
因此最终返回的值将是余数 3。
我只需要一点帮助来创建一个函数来处理传递的字符串以在其上运行这个方程。关于从哪里开始的任何建议
最佳答案
您需要迭代输入字符串并单独查看每个字符。如果字符是数字,则使用该数字的值,但如果它是字母字符,则可以在您定义的数组中查找该字符的值,或者根据该字符的 ASCII 值进行一些计算性格。
通过在迭代变量上使用模数 (%) 来实现在 7、3、1 之间交替乘数。余数也通过模数确定。
这里是代码的核心。您只需要处理遇到字母字符时的逻辑即可。 http://jsfiddle.net/swsKG/
/**
* Takes an input string of digits and characters.
* @param {string} input
* @returns {int} The remainder.
*/
function calculate(input) {
var multipliers = [7, 3, 1];
var sum = 0;
// Iterate each character in the input string.
for(var i = 0; i < input.length; i++) {
// Get the index position of the next multiplier, using modulus.
var multiplierIndex = (i % multipliers.length);
var multiplier = multipliers[multiplierIndex];
var char = input[i];
// Check if char is a digit or a character.
// If it is a character, get the appropriate int value.
if(isNaN(char)) {
// Not a number, so get the correct value.
alert(char);
} else {
// Add to the sum.
sum += char * multiplier;
}
}
// Return the remainder.
return sum % 10;
};
// Testing.
var result = calculate("057607332"); // Result is 3.
关于javascript - 创建一个函数 CheckDidget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18394703/
我正在尝试创建一个基于下面这个“算法”的函数。我基本上需要在单个变量中传递一个字符串,然后让它运行下面的函数。 校验位计算如下:每个位置分配一个值;对于数字0到9,这是数字的值,对于字母A到Z,这是1
我是一名优秀的程序员,十分优秀!