很多循环,很多问题

时间:2014-07-12 22:59:15

标签: javascript arrays for-loop

我写过这段代码。它似乎通过第一组嵌套for循环正确运行。当我在最终的for循环上面放入调试器时,它会为我返回正确的东西(如果我想返回newArray,它将返回)。我究竟做错了什么?

我想让它循环遍历我输入的letterSplit数组,然后循环遍历values数组并找到相应的值,并将相应的值推送到newArray中。到目前为止这个工作有1个字母。

但我也希望它可以用于多个字母,这样如果有人输入“cat”,它会将它们全部添加到一个新的数组“total”中。这就是我试图用最后一个for循环做的事情。建议?想法?你在某个地方看到一个错位的单词或字符吗?

var scrabble = function (letter) {
var newLetter = letter.toLowerCase();
var letterSplit = newLetter.split(" ");
var newArray = [];
var stupidArray = [];
var total = 0;
var values = [["a", 1], ["b", 3], ["c", 3], ["d", 2], ["e", 1], ["f", 4], ["g", 2], ["h", 4], ["i", 1], ["j", 8], ["k", 5], ["l", 1], ["m", 3], ["n", 1], ["o", 1],
                ["p", 3], ["q", 10], ["r", 1], ["s", 1], ["t", 1], ["u", 1], ["v", 4], ["w", 4], ["x", 8], ["y", 4], ["z", 10]];

    for (var i=0; i < letterSplit.length; i++) {
        for (var i=0; i < values.length; i++) {
            if (values[i][0] === letterSplit[0]) {
            newArray.push(values[i][1]);
            stupidArray += letterSplit.splice(0,1);
            }
        } 
    } 
     for (var i=0; i < newArray.length; i++) {
        total += i;
    }

var result = total.toString();
return total;
};

2 个答案:

答案 0 :(得分:2)

使用Object作为字母值的查找可能更简单/更明智。这样的事情。

的Javascript

var values = {
    a: 1,
    b: 3,
    c: 3,
    d: 2,
    e: 1,
    f: 4,
    g: 2,
    h: 4,
    i: 1,
    j: 8,
    k: 5,
    l: 1,
    m: 3,
    n: 1,
    o: 1,
    p: 3,
    q: 10,
    r: 1,
    s: 1,
    t: 1,
    u: 1,
    v: 4,
    w: 4,
    x: 8,
    y: 4,
    z: 10
};

function scrabble(word) {
    return word.toLowerCase().split('').reduce(function (acc, letter) {
        if (values.hasOwnProperty(letter)) {
            acc += values[letter];
        }

        return acc;
    }, 0);
}

console.log(scrabble('cat'));

输出

5

jsFiddle

答案 1 :(得分:1)

您的代码已更正

的Javascript

var scrabble = function (letter) {
    var letterSplit = letter.toLowerCase().split(''),
        total = 0,
        values = [
            ['a', 1],
            ['b', 3],
            ['c', 3],
            ['d', 2],
            ['e', 1],
            ['f', 4],
            ['g', 2],
            ['h', 4],
            ['i', 1],
            ['j', 8],
            ['k', 5],
            ['l', 1],
            ['m', 3],
            ['n', 1],
            ['o', 1],
            ['p', 3],
            ['q', 10],
            ['r', 1],
            ['s', 1],
            ['t', 1],
            ['u', 1],
            ['v', 4],
            ['w', 4],
            ['x', 8],
            ['y', 4],
            ['z', 10]
        ],
        i,
        j;

    for (i = 0; i < letterSplit.length; i++) {
        for (j = 0; j < values.length; j++) {
            if (values[j][0] === letterSplit[i]) {
                total += values[j][1];
                break;
            }
        }
    }

    return total;
};

console.log(scrabble('cat'));

jsFiddle