有比多重if语句更短的方法吗?

问题描述

我一直在研究一个项目,该项目使用滤镜向我展示了IGDB API的游戏。但是现在我遇到了多个if语句的问题。
它可以工作,但是看起来很丑,而且不是很好的代码

if (rating != "" && date != "" && platform != "") {
    return "where " + rating + " & " + date + " & " + platform + ";";
} else if (rating != "" && date == "" && platform == "") {
     return "where " + rating + ";";
} else if (rating != "" && date != "" && platform == "") {
     return "where " + rating + " & " + date + ";";
} else if (date != "" && rating == "" && platform == "") {
     return "where " + date + ";";
}

我尝试了一些不同的方法,但是没有用。
我该如何改善呢?

解决方法

您可以分别为每个属性尝试一个if块,然后使用数组存储结果并在最后将其加入。不会小很多,但我认为它更清洁并且可以扩展得多。

let attributes = [];
if (rating !== ""){
  attributes.push(rating);
}
if (date !== ""){
  attributes.push(date);
}
if (platform !== ""){
  attributes.push(platform);
}
return "where " + attributes.join(" & ") + ";";