我需要在 js 中制作更好的单词计算函数



我现在正在学习JS。我解决了这个问题,但我不喜欢我写My_Soultion.

你能给我更好的灵魂并让它变得更好吗?

拼字游戏单词计算器

实现 word_calc 方法以返回正确的拼字游戏单词分数。分数已设置供您使用,并在词典中进行管理:


one_point_values = ["a", "e", "i", "o", "u", "l", "n", "r", "s", "t"];
two_point_values = ["d", "g"];
three_point_values = ["b", "c", "m", "p"];
four_point_values = ["f", "h", "v", "w", "y"];
five_point_values = ["k"];
eight_point_values = ["j","x"];
ten_point_values = ["z","q"];

word_calc("zoo") // 12
word_calc("bus") // 5

My_code


function word_calc(word) {

var inputArr = word.split("");
var countArr = [];
var dataArr = [one_point_values,two_point_values,three_point_values,four_point_values,five_point_values,eight_point_values,ten_point_values];
var total = 0;
function sum(array) {
var countArr = [];
var sum = 0;
if(array[0]=== one_point_values[0]) {
for (let i = 0; i < inputArr.length; i ++ ) {  
if (array.includes(inputArr[i])) {
countArr.push(inputArr[i])
} 
sum = countArr.length * 1;
}
countArr = [];
} 
else if (array[0]=== two_point_values[0]){
for (let i = 0; i < inputArr.length; i ++ ) {  
if (array.includes(inputArr[i])) {
countArr.push(inputArr[i])
} 
sum = countArr.length * 2;
}
countArr = [];  
}
else if (array[0]=== three_point_values[0]) {
for (let i = 0; i < inputArr.length; i ++ ) {  
if (array.includes(inputArr[i])) {
countArr.push(inputArr[i])
} 
sum = countArr.length * 3;
}
countArr = [];
}
else if (array[0]=== four_point_values[0]) {
for (let i = 0; i < inputArr.length; i ++ ) {  
if (array.includes(inputArr[i])) {
countArr.push(inputArr[i])
} 
sum = countArr.length * 4;
}
countArr = [];
}
else if (array[0]=== five_point_values[0]) {
for (let i = 0; i < inputArr.length; i ++ ) {  
if (array.includes(inputArr[i])) {
countArr.push(inputArr[i])
} 
sum = countArr.length * 5;
}
countArr = [];
}
else if (array[0]=== five_point_values[0]) {
for (let i = 0; i < inputArr.length; i ++ ) {  
if (array.includes(inputArr[i])) {
countArr.push(inputArr[i])
} 
sum = countArr.length * 8;
}
countArr = [];
} 
else if (array[0]=== ten_point_values[0]) {
for (let i = 0; i < inputArr.length; i ++ ) {   
if (array.includes(inputArr[i])) {
countArr.push(inputArr[i])
} 
sum = countArr.length * 10;
}
countArr = [];
}
total = total + sum;
}
dataArr.forEach((ele)=>{
sum(ele);
})

return total;

}

首先使所有字符点对象。 然后获取传递的函数中每个字符的点数并汇总所有字符。

减少

const char_points = {
"a": 1,
"e": 1,
"i": 1,
"o": 1,
"u": 1,
"l": 1,
"n": 1,
"r": 1,
"s": 1,
"t": 1,
"d": 2,
"g": 2,
"b": 3,
"c": 3,
"m": 3,
"p": 3,
"f": 4,
"h": 4,
"v": 4,
"w": 4,
"y": 4,
"k": 5,
"j": 8,
"x": 8,
"z": 10,
"q": 10
};
const reducer = (accumulator, currentValue) => accumulator + currentValue;
function word_calc(w) {
// convert your string array to relevant numbers 
const splitted_array = w.split("").map(function(item) {
return char_points[item]
});
// You can use simple loop to sum up or reduce to reduce and sum the array
const total = splitted_array.reduce(reducer);
console.log(total)
}
word_calc("zoo") // 12
word_calc("bus") // 5

@kaushik的回答略有增强。减少了一个额外循环的使用。

const char_points = {
"a": 1,
"e": 1,
"i": 1,
"o": 1,
"u": 1,
"l": 1,
"n": 1,
"r": 1,
"s": 1,
"t": 1,
"d": 2,
"g": 2,
"b": 3,
"c": 3,
"m": 3,
"p": 3,
"f": 4,
"h": 4,
"v": 4,
"w": 4,
"y": 4,
"k": 5,
"j": 8,
"x": 8,
"z": 10,
"q": 10
};
function word_calc(w) {
let total=0;
// convert your string array to relevant numbers and add it to the total
w.split("").map(function(item) {
total += char_points[item];
});
console.log(total)
}
word_calc("zoo") // 12
word_calc("zoozoo") // 24
word_calc("bus") // 5

相关内容

最新更新