javascript - 我需要在js中制作更好的单词计算功能
问题描述
我现在正在学习JS。我解决了这个问题,但我不喜欢我写的 My_Soultion 。
你能给我更好的灵魂,让它变得更好吗?
拼字游戏单词计算器
实现 word_calc 方法以返回正确的 Scrabble 单词分数。分数已经设置好供您使用,并在字典中进行管理:
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
我的代码
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
推荐阅读
- javascript - GSAP ScrollTrigger 动画淡入淡出不透明度问题
- mysql - MySql 中的规范化和表
- c# - 'private (string, object)[] s;' 是什么意思?意思/做?
- javascript - 比较数组和过滤器,使用 MongoDB 聚合
- numpy - NumPy 中的 SVG 像素合成操作
- vb.net - Google.Analytics.Data.V1Alpha - 属性“daterange”只读
- csv - AWK:根据两列信息过滤数据
- python - LSTM 上的 Pytorch 修剪会增加模型大小?
- javascript - (Javascript)刷新页面后元素消失
- docker-compose - docker-compose 使用的环境文件如何跨生命周期环境进行管理