遍历对象属性以检查数组中是否存在
Iterate Over Object Properties to Check if Any Exist in Array
我正在使用 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}
最后一行检查日志是否已经包含其中一个操作员。这种 shorthand 方法是否可行,或者我是否需要遍历对象属性?
这是我正在查看的 JSFiddle,尝试使用第一位评论者推荐的 object.keys(ops) 方法。
其中一种方法是:
log.some( x => Object.keys(ops).includes(x) )
我正在使用 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}
最后一行检查日志是否已经包含其中一个操作员。这种 shorthand 方法是否可行,或者我是否需要遍历对象属性?
这是我正在查看的 JSFiddle,尝试使用第一位评论者推荐的 object.keys(ops) 方法。
其中一种方法是:
log.some( x => Object.keys(ops).includes(x) )