如何解决Javascript:将字符串转换为数组
这是我对计算器项目的功能之一。首先,我需要将输入字符串转换为数组,然后再进行操作。 (假设该输入现在只有数字和'+'号。
我的问题是,如何改进此代码?还有什么其他方法可以解决这个问题? (时间复杂度,整洁度,较短的代码......。无论如何)
function convertArray(input) {
let array = [];
let num = "";
for (let i = 0; i < input.length; i++) {
if (input.charAt(i) == '+') {
array.push(input.charAt(i));
} else {
do {
num += input.charAt(i);
i++;
} while (i < input.length && input.charAt(i) !== '+');
array.push(num);
num = "";
i--;
}
}
return array;
}
console.log(convertArray("10+2+3000+70+1"));
解决方法
您可以分组。这也会将该组添加到数组中。
对于其他计算符号,可以将其添加到括号中。
const convertArray = string => string.split(/([+])/);
console.log(convertArray("10+2+3000+70+1"));
,
const q = prompt('Sum?');
alert('Answer: ' + eval(q));
不建议您使用eval,但是如果您所需要的只是一个快速而肮脏的技巧,它就可以工作。 就个人而言,我建议使用Math.js之类的库,但是任何库都可以。
如果您确实需要为项目自己完成此操作,建议您在此处查看答案:Evaluating a string as a mathematical expression in JavaScript。
希望您在计划做的事情上都能成功。
,似乎复杂性与确定操作员的意愿有关。在代码中,您只需将它们全部推入数组即可。这样做就像
const re = /((\d+)|([^\d]+))/g
const convertArray = str => {
let match,arr=[];
while (match = re.exec(str)) {
arr.push(match[1]) // here you can determine if you have an operator
console.log(match[1],"Operator?",!/^\d+$/.test(match[1]))
}
return arr
}
const str = "10+2+3000+70+1";
console.log(convertArray(str));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。