更简洁地编写多个逻辑运算符
Writing multiple logical operators more concisely
我正在尝试以更简洁的方式编写多个逻辑运算符。就我而言,当所有四个输入都只是数字时,我希望函数仅 运行 。我能想到的唯一方法是将它们全部写在一个带有 && 的 if 语句中,使用多个 ifs(如下所示),或使用 switch。但是我想知道有没有更简洁的方法
function fn() {
const input = display.getInput();
if (input.p !== "" && !isNaN(input.p)) {
if (input.d !== "" && !isNaN(input.d)) {
if (input.s !== "" && !isNaN(input.s)) {
if (input.y !== "" && !isNaN(input.y)) {
if (input.y <= 100) {
/* run code */
}
}
}
}
}
}
要准确回答您的问题,您可以这样做:
if (input.p !== "" && !isNaN(input.p) && input.d !== "" && !isNaN(input.d) ...
但实际上你应该写得更好。先实现一个校验函数:
function isValid(property) {
return property !== "" && !isNaN(property);
}
所以 if 会是这样的:
if (isValid(input.p) && isValid(input.d) && ...
最后,您可能希望将所有内容都放入一个新函数中:
function isEverythingValid(input) {
for (let property of ["p", "d", "s", "y"]) {
if (!isValid(input[property])) {
return false;
}
}
return input.y <= 100;
}
我正在尝试以更简洁的方式编写多个逻辑运算符。就我而言,当所有四个输入都只是数字时,我希望函数仅 运行 。我能想到的唯一方法是将它们全部写在一个带有 && 的 if 语句中,使用多个 ifs(如下所示),或使用 switch。但是我想知道有没有更简洁的方法
function fn() {
const input = display.getInput();
if (input.p !== "" && !isNaN(input.p)) {
if (input.d !== "" && !isNaN(input.d)) {
if (input.s !== "" && !isNaN(input.s)) {
if (input.y !== "" && !isNaN(input.y)) {
if (input.y <= 100) {
/* run code */
}
}
}
}
}
}
要准确回答您的问题,您可以这样做:
if (input.p !== "" && !isNaN(input.p) && input.d !== "" && !isNaN(input.d) ...
但实际上你应该写得更好。先实现一个校验函数:
function isValid(property) {
return property !== "" && !isNaN(property);
}
所以 if 会是这样的:
if (isValid(input.p) && isValid(input.d) && ...
最后,您可能希望将所有内容都放入一个新函数中:
function isEverythingValid(input) {
for (let property of ["p", "d", "s", "y"]) {
if (!isValid(input[property])) {
return false;
}
}
return input.y <= 100;
}