javascript - 创建一个函数 CheckDidget

标签 javascript jquery function

我正在尝试创建一个基于下面这个“算法”的函数。我基本上需要在单个变量中传递一个字符串,然后让它运行下面的函数。

<小时/>

校验位计算如下:每个位置分配一个值;对于数字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/

相关文章:

javascript - 使用 Javascript 从 JSON 文件中提取数据到 HTML

javascript - CSS3 过渡填充

javascript - 似乎无法访问 json 数据的特定元素

jquery - 当元素开始在窗口中显示时应用类

javascript - 将重复代码注入(inject)函数 : JavaScript

javascript - (Ruby、Rails、Javascript)拖放操作不会干扰服务器……?

javascript - jshint:时髦的代码与分号;如何在这里消除 jshint 对分号的所有提示?

jquery - 使用 jquery 代码激活 iframe 的问题

javascript - DataTables - 返回 ajax 数据的格式

function - 函数是一种变量吗?