javascript - 简化嵌套的 if/else 条件 (JS)
问题描述
我想简化这个嵌套的 if/else 条件或语句,但我不知道怎么做,因为我希望它们更易于阅读和更实用。我只是编程的大一新生。这就是为什么我被这个意大利面条代码卡住了。
setmessage = 'You have requested that the file type of the site screenshot be:'
normalized = message.content.toLowerCase();
npng, npdf = normalized.substring(0, 3);
nhtml = normalized.substring(0, 4);
if (npng == 'png') {
message.channel.send(setmessage + '**PNG**');
areyousure();
} else if (npdf == 'pdf') {
message.channel.send(setmessage + '**PDF**');
areyousure();
} else if (nhtml == 'html') {
message.channel.send(setmessage + '**HTML**');
areyousure();
} else {
message.channel.send(invalidmessage);
getouttahere();
}
解决方案
制作消息开头的可能子字符串的数组,并用于.find
查看匹配的子字符串。如果有,请.send
用它调用 - 否则,传入invalidmessage
.
const permittedExtensions = ['png', 'pdf', 'html'];
const normalized = message.content.toLowerCase();
const ext = permittedExtensions.find(ext => normalized.startsWith(ext));
if (ext) {
message.channel.send(setmessage + '**' + ext.toUpperCase() + '**');
areyousure();
} else {
message.channel.send(invalidmessage);
getouttahere();
}
推荐阅读
- typescript - 将在 Typescript 中使用 --strictNullChecks 从 DB 或 API 接收异步数据的变量的类型?
- python - 熊猫根据来自另一个数据帧的组创建多个数据帧
- flutter - 在散点图中改变半径和颜色颤动
- reactjs - 组件未在 React useState 中更新
- dropdown - ACA 应用程序不将 repo 约束属性显示为下拉列表
- c++ - C++运算符++重载是如何工作的
- php - 将站点从一台主机移动到另一台主机后出现致命错误
- jquery - 如何重定向到jQuery中的某个链接?
- python - 如何在套接字python中使用公共ip4
- c++ - 如何从许多函数中获取函数指针并将参数传递给它?