【问题标题】:Chrome App: Doing maths from a stringChrome 应用程序:从字符串中进行数学运算
【发布时间】:2015-10-07 02:15:30
【问题描述】:

我正在构建一个基本的 Chrome 应用程序,它构造如下字符串:

"1 + 4 - 3 + -2"

鉴于您不能在 Chrome 应用程序中使用 eval(),我如何才能得到这样的字符串的答案?

例如。如果这只是一个普通的网页,我会使用这样的东西:

var question = {
  text: "1 + 4 - 3 + -2",
  answer: eval(this.text)
}

是否有任何可能的方法将eval() 替换为其他内容来回答question.text 之类的字符串?

【问题讨论】:

  • @JSelser 给个链接好吗?
  • 这是一个问题,其已接受的答案有足够的链接让您头晕好几天。调车场算法是一个自动机:stackoverflow.com/questions/114586/…

标签: javascript google-chrome-app


【解决方案1】:

尝试修改字符串为

"+1 +4 -3 -2"

利用String.prototype.split()Array.prototype.reduce()Number()

var question = {
  text: "+1 +4 -3 -2",
  answer: function() {
            return this.text.split(" ")
                   .reduce(function(n, m) {
                     return Number(n) + Number(m)
                   })
          }
};

console.log(question.answer())

【讨论】:

  • 当然!没有考虑使用数组。我想我可以扩展该方法以支持其他类型的数学字符串。谢谢。
  • 出色的解决方案。严重怀疑您是否可以扩展它以支持不同的运营商。
【解决方案2】:

试试这个

var question = {
  text: "1 + 4 - 3 + -2",
  answer: eval(ans(question.text))
}
console.log('Text : '+question.text);
console.log('answer : '+question.answer);

使用字符串替换方法

function ans(str){
var s = str.replace(/\s/g, '')
console.log('S : '+s);
return s;
}

【讨论】:

  • 该方法只是删除空格并使用eval 对其进行评估。我要的是一种完全替换eval 的方法。
  • 用上面的函数测试输入“1 + 4 - 3 + -2”,但结果是NAN。
  • 如果您的意思是另一个答案,是的,但可以更改它以支持我提供的字符串。另一个答案不是一个深入的解决方案,因为我所要求的可能证明很困难,而只是一个关于如何做到这一点的想法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 2018-09-01
相关资源
最近更新 更多