首页 > 解决方案 > 简化嵌套的 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();
}

标签: javascript

解决方案


制作消息开头的可能子字符串的数组,并用于.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();
}

推荐阅读