简单的数字命理学
simple numerology with javascript
大家好,我是一个新手,所以请友好。我做了一个搜索,发现了一些与python相关的东西,但没有一个与JS有关。
我已经完成了我的代码学院关于JS的课程一半,我正在尝试应用我到目前为止学到的东西来创建一个简单的数字命理学脚本。到目前为止,我已经学习了函数,循环,变量和数组位置,所以我认为这个任务应该是可以实现的。
目的是让用户输入他们的名字,脚本根据命理学规则自动计算它的值。
例如:: 1、J: 1, S: 1, B: 2,凯西:2,T: 2, C: 3,李: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,问:8,Z: 8我:9,接待员:9
所以TOM这个名字应该等于12,因为(2+6+4)。
我还没有得到非常远关于创建一个工作脚本,不知道如何进行。到目前为止,我能够隔离名称中的第一个字符,但我不知道如何将其转换为数字,或者如何对其余字符进行相同的操作:
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
关键字,除非你有意将其设置为全局) - 一旦有了名称,就需要循环遍历名称中的每个字符。您可以使用
for
环,String
的length
性质作为环的限制条件。 - 现在,在
for
循环的每次迭代中,您将获得名称字符串的一个字符。您可以使用此字符来获取匹配密钥的值,使用x[ currentCharacter ]
,例如x["T"]。 你需要保持一个计数器变量来存储所有字符值的总和,所以我在循环之前声明了
nameScore
变量,并给它分配了一个初始值0
。每次迭代获取当前字符的对应值,并将数值添加到nameScore
。到循环结束时,nameScore
包含名称字符串中所有字符值的总和。您可以console.log()
或alert()
,或以任何您想要的方式使用。第二部分:获取nameScore的个位数值对于这一部分,我遵循了以下步骤(可能还有其他方法):
-
我们需要检查的第一个条件是
nameScore
大于10,否则它已经是个位数了。如果数字的和大于一个个位数,并且需要再次计算这个个位数的和,这个检查也会有帮助。我使用while
循环 -
在while循环中,我们需要再次保持一个计数器(初始化为0),迭代每个数字并将其添加到计数器中。为了循环遍历它,我们首先将其转换为
string
(使用''+singleDigitScore
),以便我们可以访问length
属性并使用charAt()
获取单个数字。由于charAt()
返回数字的字符串表示形式,因此在将其添加到计数器之前,使用parseInt()
将其转换为数字。如果结果数小于10,则退出循环,否则再次运行相同的循环,并将number更新为刚刚计算的新数。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);
非常欣赏Mohit Bhardwaj的回答,以及对想要了解JavaScript基本知识的提问者的解释。一旦你掌握了这个,知道了如何遍历字符串,然后学习其他javascript实用工具和概念,你仍然可以用不同的方式尝试。比如用split来学习split是如何工作的,在数组中运行map或reduce,然后用forEach来学习它,这里我给出一个快速的例子来解决这个问题,这样你也可以学习JavaScript中的其他代码
var name = ..... // first get value in name variable however you want
var sum = name.split('').reduce(function(total, eachNumKey){
return (isNaN(total) ? x[total] : total) + x[eachNumKey]
});
这里我将字符串分割成一个数组,这样我就可以运行forEach而不是维护索引和通过索引获取,然后运行reduce来计算sum,(可以先映射数组来转换等价数组,然后很容易地求和,但随后将迭代2次,但在其他情况下你也应该学习map)。在reduce中,第一次它的第一个参数是数组的第一个值,第二个是第二个值,但下一次它的第一个参数将是你返回的任何东西,第二个参数将是迭代器,所以只是检查了一个条件,并映射到相应的值需要添加。注意:就性能而言,这并不是解决这个特定问题的更好的解决方案,但是如果您尝试了不同的方法,那么您将了解它们的用途以及何时尝试什么。
- 简单的Javascript方式,在输入字段的每5位数字后添加一个空格
- 每次使用 Javascript 加载页面时增加一个数字(变量)的简单方法
- 简单的ajax/尝试替换数字
- 如何在 JavaScript 或 jQuery 中发送一个简单的数字并在 URL 中接收
- 对字符串执行简单的数字测试
- 在javascript中的简单数学中,在循环中将数字X次相加会产生与事先乘以X并在之后相加不同的结果
- Angular/Javascript:按值复制一个简单的数字而不引用
- Javascript 简单检查网络表单,以确保它包含数字和字母(而不是我的代码)
- 突出显示简单的数字行
- 简单添加数字的位数平方
- 为什么我的简单JavaScript数字,只删除,检查器不工作
- 将简单的倒计时(作为数字)添加到我的php脚本中
- 如何使用.appendChild生成一个包含数字的简单表行
- 简单的用Javascript猜我的数字游戏
- 在JavaScript中获取数字中小数位数的最简单方法
- 在jQuery中设置数字格式的简单方法
- 更简单的方法来计算数字乘数后缀
- Javascript计算简单的乘法自动更改任何数字
- 仅从文本字段中选择数字,加上简单的计算
- 简单的javascript正则表达式条带数字