我正在使用eval()函数创建一个计算器,正如你所知eval返回一个字符串(我指的是this tutorial),例如20+30
。我现在想要的是拆分这个字符串,这样我就会得到像[20,30,50]
这样的数据数组,其中20
和30
是操作数,50
就是这个结果案件。
到目前为止我所做的是:
var input = document.getElementById('screen');
var result= '20+30'; // as an example
var firstOperand = result.split('+', 1); //this is taking the first operand
我真正想要的就是我提到的将字符串"20+30"
的输入值转换为数组:myArr = [20,30,50]
。
任何帮助?
答案 0 :(得分:1)
使用地图的力量并减少!
result = '1+2+3+4+5+6+7+8+9';
a = result.split('+').map(function(x){ return parseInt(x) });
b = a;
b.push(a.reduce(function(p, c) { return p+c; }));
// b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 45]
顺便说一句,你不应该使用eval(),查看Shunting-yard algorithm instead。可以在SO和Rosettacode处找到该算法的代码示例。
答案 1 :(得分:0)
你可以创建传递给split函数的数组只有分隔符。
var myArr = result.split('+');
现在你需要添加结果:
myArr.push("50");