您需要迭代输入字符串并单独查看每个字符。如果字符是数字,则使用数字的值,但如果是字母字符,则可以在定义的数组中查找字符的值,或者根据 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.