javascript - 如何在 JavaScript 中实现变量运算符?
问题描述
我不确定“变量”是否是在这里使用的正确词,但本质上,我想使用 JavaScript 创建一个变量运算符。
到目前为止,我能想到的最好的事情是创建一个 switch 语句,但这似乎非常重复和乏味。有什么办法可以用条件运算符编写一个“If 语句”?
我想到的:
variableOperator(x, y, operator) {
switch(operator) {
case '>=':
if (x >= y) {
// logic
}
break;
case '<=':
if (x <= y) {
// logic
}
break;
case '<':
if (x < y) {
// logic
}
break;
case '<':
if (x < y) {
// logic
}
break;
}
}
我想知道在伪代码中是否可能(下面的代码显然不起作用,但在概念上,这是我理想情况下想要使用的)。无论运算符是什么(大于、等于等),这个 if 语句都可以处理它:
variableOperator(x, y, operator) {
if (x operator y) {
// logic
}
}
编辑:我应该澄清一下:x 和 y 并不总是必须是数字类型。
主要是,我想知道字符串(az,AZ,0-9)比较(== 或!=)和数字比较(<,>,<=,>=)。我正在做的项目不需要担心表情符号或其他复杂字符。
本质上,无论我是在比较字符串还是数字,我都想知道运算符本身是否可以是一个可以轻松操作/更改的变量,这样就不必为每种情况编写单独的代码.
解决方案
在查找表中编码您的运算符,然后您可以使用它来确定要做什么。这将您的代码简化为仅if
用于检查值是否通过操作员检查的语句。您还可以包含一个后备 - 如果未找到运算符,则假设它失败。
const operators = {
">" : (a, b) => a > b ,
">=": (a, b) => a >= b,
"<" : (a, b) => a < b ,
"<=": (a, b) => a <= b,
"==": (a, b) => a == b,
}
function doStuff(x, y, op) {
const check = operators[op] ?? (() => false);
if (check(x, y)) {
console.log("do something");
} else {
console.log("ignore");
}
}
doStuff(4, 2, ">");
doStuff(2, 4, "<");
doStuff("apple", "banana", "<");
doStuff(4, 2, "==");
doStuff(4, 2, "");
推荐阅读
- excel - 如果今天已过,请添加日期
- c - 将不同的 C 程序链接在一起
- java - Could not transfer artifact org.gs4tr.projectdirector.adaptors:globallink-connect-api:jar:4.18.2 from/to nexus
- python - pyqt5.qtcore and pyqt4.qtcore modules both wrap the qobject class
- android - 如何改变吐司的位置?
- java - 将 UTC 时间解析为 CET/CEST
- c++ - VTK 8.1.1 & Qt QML:双深度剥离不起作用
- c# - 在 Word 中嵌入 Excel 时不显示 C# VSTO Excel 任务窗格
- r - 在有很多 NA 的同时关联两个数据帧
- sql - ODS HTML 电子邮件输出 - 我的单元格都被压缩了,如何扩展为全长的列名?