我写过这段代码。它似乎通过第一组嵌套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;
};
答案 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
上
答案 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'));
上