This question already has answers here:
Dynamically access object property using variable
(16个答案)
4年前关闭。
大家好,我是新手,所以请保持友好。我进行了搜索,发现与python有关的内容,但与JS无关。
我已经完成了JS代码学院类(class)的一半,并且正在尝试将到目前为止所学的知识应用于创建简单的命理学脚本。到目前为止,我已经学习了函数,循环,变量和数组位置,因此我认为此任务应该可以实现。
目的是让用户输入其名称,然后脚本根据命理规则自动计算其值。
例如:
A:1,J:1,S:1,B:2,K:2,T:2,C:3,L:3,U:3,D:4,M:4,V:4,E: 5,N:5,W:5,F:6,O:6,X:6,G:7,P:7,Y:7,H:8,Q:8,Z:8,I:9, R:9
因此,由于(2 + 6 + 4),名称TOM等于12。
关于创建一个有效的脚本,我还没有走很远的距离,也不知道该如何继续。到目前为止,我能够隔离名称中的第一个字符,但是我不知道如何将其转换为数字,或者如何对其余字符执行相同操作:
首先,您需要在变量(You should always use 一旦有了名称,就需要遍历名称中的每个字符。您可以为此使用 现在,在 您需要保留一个计数器变量来存储所有字符值的总和,因此我在循环之前声明了
第二部分:获取名称的单个数字值
对于这一部分,我遵循以下步骤(可能还有其他方法):
我们需要检查的第一个条件是 在while循环中,我们需要再次保留一个计数器(初始化为0),遍历每个数字并将其添加到计数器中。为了遍历它,我们首先将其转换为
(16个答案)
4年前关闭。
大家好,我是新手,所以请保持友好。我进行了搜索,发现与python有关的内容,但与JS无关。
我已经完成了JS代码学院类(class)的一半,并且正在尝试将到目前为止所学的知识应用于创建简单的命理学脚本。到目前为止,我已经学习了函数,循环,变量和数组位置,因此我认为此任务应该可以实现。
目的是让用户输入其名称,然后脚本根据命理规则自动计算其值。
例如:
A:1,J:1,S:1,B:2,K:2,T:2,C:3,L:3,U:3,D:4,M:4,V:4,E: 5,N:5,W:5,F:6,O:6,X:6,G:7,P:7,Y:7,H:8,Q:8,Z:8,I:9, R:9
因此,由于(2 + 6 + 4),名称TOM等于12。
关于创建一个有效的脚本,我还没有走很远的距离,也不知道该如何继续。到目前为止,我能够隔离名称中的第一个字符,但是我不知道如何将其转换为数字,或者如何对其余字符执行相同操作:
var x = {A:1, J:1, S:1, B:2, K:2, T:2, C:3, L:3, U:3, D:4,
M:4, V:4, E:5, N:5, W:5, F:6, O:6, X:6, G:7, P:7, Y:7, H:8,
Q:8, Z:8, I:9, R:9};
name = prompt ("Type your name in CAPS"); //for example: TOM
name = name[0]; // first letter is T
console.log(name[0]); // prints T
console.log(x.T) // prints 2
console.log(x.(name[0])); //not working. I thought it would also print 2??
最佳答案
请尝试以下代码。这里是我所做的解释:
var
keyword while declaring new variables unless you intentionally want to make it global)中分配输入的名称for
loop,并使用 length
property of String
作为循环限制条件。 for
循环的每次迭代中,您将获得名称字符串的一个字符。您可以使用此字符来获取匹配键的值,例如使用x[ currentCharacter ]
。 x [“T”]。 nameScore
变量,并为其分配了初始值0
。每次迭代都会获取当前字符的对应值,并将数值添加到nameScore
中。循环结束时,nameScore
包含名称字符串中所有字符值的总和。您可以对其进行console.log()
或alert()
编码,或以其他任何方式使用。 第二部分:获取名称的单个数字值
对于这一部分,我遵循以下步骤(可能还有其他方法):
nameScore
大于10,否则它已经是一位数字。如果我们的位数总和再次大于一位数,并且我们需要再次计算一位数总和,则此检查也有帮助。我为此使用了while
循环。 string
(使用''+singleDigitScore
),以便我们可以访问length
属性并使用charAt()
获取各个数字。由于charAt()
返回数字的字符串表示形式,因此在将其添加到计数器之前,我们使用parseInt()
将其转换为数字。如果得出的数字小于10,则退出循环,否则将再次运行同一循环,并将数字更新为刚计算出的新数字。var x = {A:1, J:1, S:1, B:2, K:2, T:2, C:3, L:3, U:3, D:4,
M:4, V:4, E:5, N:5, W:5, F:6, O:6, X:6, G:7, P:7, Y:7, H:8,
Q:8, Z:8, I:9, R:9};
var name = prompt ("Type your name in CAPS"); //for example: TOM
var nameScore = 0;
for( var i = 0; i < name.length; i++ )
{
var curChar = name.charAt( i );
var curValue = x[ curChar ];
nameScore = nameScore + curValue;
}//for()
console.log( "Total score for this name is: " + nameScore );
var singleDigitScore = nameScore;
while( singleDigitScore >= 10 )
{
var total = 0;
var str = '' + singleDigitScore;
for( var i = 0; i < str.length; i++ )
{
total = total + parseInt( str.charAt(i) );
}//for()
singleDigitScore = total;
}//while
console.log("Single Digit score is: "+singleDigitScore);
09-06 18:18