Javascript 如何计算数字和数学运算符的数组(或字符串)

Javascript 如何计算数字和数学运算符的数组(或字符串),javascript,jquery,arrays,string,calculator,Javascript,Jquery,Arrays,String,Calculator,我正在制作一个计算器,并将所有单击的数字和运算符按入/保存到一个数组和一个字符串中 我想知道在这种情况下,哪种方法是最好的。从输入或生成字符串或数组是我想不出的更好方法 我想计算数组或字符串。字符串给出了错误的答案,我不知道如何计算数组。下面是演示计算器 $(文档).ready(函数(){ var-inputArr=[]; var inputStr=''; $('span')。单击(函数(){ $('#input').append($(this.text()); //推送到输入端 push($

我正在制作一个计算器,并将所有单击的数字和运算符按入/保存到一个数组和一个字符串中

我想知道在这种情况下,哪种方法是最好的。从输入生成字符串或数组是我想不出的更好方法

我想计算数组或字符串。字符串给出了错误的答案,我不知道如何计算数组。下面是演示计算器

$(文档).ready(函数(){
var-inputArr=[];
var inputStr='';
$('span')。单击(函数(){
$('#input').append($(this.text());
//推送到输入端
push($(this.text());
//添加到inputStr
inputStr+=$(this).text();
});
//得到结果
$('.equals')。单击(函数(){
$(“#结果”).text(inputArr);
$('#result')。追加(“
”+parseInt(inputStr)); }); $('.clear')。单击(函数(){ //清除一切 $('#输入')。文本(''; inputArr=[]; inputStr=''; }); });
span{
背景:#bbb ;;
边界半径:2px;
保证金:5px;
填充:.5em;
光标:指针;
}
.等于{
宽度:30%;
背景:#bbb ;;
边界半径:2px;
利润率:15px;
填充:.5em;
光标:指针;
文本对齐:居中;
字号:1.5em;
}

1  2  3  4  5 


6 7 8 9 0

+-*/清楚的

=


parseInt
不使用数学运算计算字符串<代码>评估将执行此操作。如果您担心使用
eval
的安全性,则必须编写一个计算器函数来解析字符串并观察操作顺序(这是一项更复杂的任务)。我认为没有理由同时保留数组和字符串。任何一个都足够了

修改最少的工作代码段:

$(文档).ready(函数(){
var inputStr='';
$('span')。单击(函数(){
$('#input').append($(this.text());
//添加到inputStr
inputStr+=$(this).text();
});
//得到结果
$('.equals')。单击(函数(){
//或者按您想要的格式设置
$('#result').text(inputStr+'='+eval(inputStr));
});
$('.clear')。单击(函数(){
//清除一切
$('#输入')。文本('';
$(“#结果”)。文本(“”);
inputArr=[];
inputStr='';
});
});
span{
背景:#bbb ;;
边界半径:2px;
保证金:5px;
填充:.5em;
光标:指针;
}
.等于{
宽度:30%;
背景:#bbb ;;
边界半径:2px;
利润率:15px;
填充:.5em;
光标:指针;
文本对齐:居中;
字号:1.5em;
}

1  2  3  4  5 


6 7 8 9 0

+-*/清楚的

=


此函数接受字符串表达式或创建表达式的字符数组

函数计算(表达式){
“严格模式”;
if(Array.isArray(表达式))
expression=expression.join(“”);
var allowedChars=“1234567890%^*()-+/”;
for(var i=0;i}
一个简单解决方案的可能的重复就是使用
eval
,但有些人会说eval是邪恶的,所以下一个解决方案是解析字符串并进行计算。。最后,关于如何安全使用eval的一些合理建议,谢谢。