迭代对象属性以检查数组中是否存在任何异常

时间:2017-07-17 17:46:15

标签: javascript arrays object indexof

我正在使用JavaScript构建计算器应用。当用户点击运算符(+, - ,*,/)时,我想首先检查是否已输入任何其他运算符。我将所有按钮按下存储在一个数组中。如果操作符已经存在,则执行的第一个操作是将操作符替换为按下的操作符(如果不存在执行操作的第二个编号)或执行等操作,然后将新操作符添加到操作符的末尾。结果。例如,如果用户输入" 1 + 1"然后进入另一个" +"运算符,我希望它执行1 + 1操作,然后将下一个操作存储为" 2 + [接下来输入的任何内容]"。

我有一个存储与每个运算符关联的函数的对象。是否可以做类似的事情:

var ops = {
  "+": function(a,b) {return a + b},
  "-": function(a,b) {return a - b},
  // etc...
};

// And then in the code
if (log.indexOf(ops) >= 0) { // perform math, then add new op}

最后一行是检查日志是否已包含其中一个运算符。是否可以使用这种速记方法,或者我是否需要迭代对象属性?

这是我正在查看的JSFiddle,尝试第一位评论者推荐的object.keys(操作)方法。

1 个答案:

答案 0 :(得分:1)

其中一种方法是:

log.some( x => Object.keys(ops).includes(x) )

请参阅Array.prototype.includes()Array.prototype.some()