微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaScript 文本到数字转换器故障

如何解决JavaScript 文本到数字转换器故障

我有将文本转换为数字的代码

var vals= ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9"," ",",".","!","?","/","\\","#","@","=","-","_",":"];
var input = prompt("Input:");
var inn = input.toLowerCase + "";
var ins = inn.split("");
var pswrd = prompt("Password(LowerCase):")
var pin = pswrd.toLowerCase + "";
var pins = pin.split("");
var out = "";
var i;
var mul = Math.floor((Math.random() * 30) + 1);
for(i=0;i<ins.length;i++){
  var num = ins[i]
  var val = vals.indexOf(num)
  var out = out+val*mul+" "
}
var out = out+"ↀ"
for(i=0;i<pins.length;i++){
  var num = pins[i]
  var val = vals.indexOf(num)
  var out = out+val*mul+" "
}
alert('Result:' + out);

但是由于原因,当我运行它时会发生这种情况:

输入:你好

密码:嗨

输出:50 200 130 20 190 80 140 130 360 190 140 -10 140 220 40 170 -10 0 180 40 -10 -10 360 -10 360 -10 0 10 360 -10 0 10 360 -10 0 10 10 360 -10 ↀ50 200 130 20 190 80 140 130 360 190 140 -10 140 220 40 170 -10 0 180 40 -10 -10 360 -10 10 30 10 30 10 30 10 30 160 10

我不知道发生了什么?有人可以帮忙吗...

提前致谢!

解决方法

您需要调用 toLowerCase 方法,而不是像访问对象的属性一样尝试访问它。我怀疑您已经根据连接的空字符串从这些行中收到错误 - 这使您的错误消失,但没有“修复”您的代码。

顺便说一句,您可以调用多个方法,而不是为数据突变的每一步都创建一个新变量。当您已经将当前索引存储在 indexOf 中时,我也不知道为什么要在循环中调用 i

无论如何,我不会为你重构整个代码块......但试试这个:

var vals= ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9"," ",",".","!","?","/","\\","#","@","=","-","_",":"];

var input = prompt("Input:");
var pswrd = prompt("Password(LowerCase):")

var inn = input.toLowerCase().split("");
var pin = pswrd.toLowerCase().split("");

var out = "";
var i;

var mul = Math.floor((Math.random() * 30) + 1);

for(i=0;i<inn.length;i++){
  var num = inn[i]
  var val = vals.indexOf(num)
  var out = out+val*mul+" "
}

var out = out+"ↀ"

for(i=0;i<pin.length;i++){
  var num = pin[i]
  var val = vals.indexOf(num)
  var out = out+val*mul+" "
}

alert('Result:' + out);


,

你的编码方式很糟糕,javascript 值得更好

const vals = 'abcdefghijklmnopqrstuvwxyz0123456789,.!?/\\#@=-_:' 

var mul = Math.floor((Math.random() * 30) + 1),inn = (prompt('Input:')).toLowerCase(),pin = (prompt('Password(LowerCase):')).toLowerCase()
  ;
var out  = ''

for (let letter of inn)  
  out += `${ vals.indexOf( letter ) * mul} `;

out += 'ↀ'

for (let letter of pin)  
  out += `${ vals.indexOf( letter ) * mul} `;

alert('Result:' + out)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?