我有一个庞大的数据,我需要根据Choices对其进行过滤,以获取一定的价值,我尝试使用if,但是这样做非常困难,因为它确实庞大且嵌套。
exports.handler = function(event, context, callback) {
console.log("here1");
var request = require('request');
console.log("here2");
var promise = new Promise(function(resolve, reject) {
request({
url: 'https://audd.p.rapidapi.com',
method: 'post',
headers: { "X-RapidAPI-Host": "audd.p.rapidapi.com", 'X-RapidAPI-Key': '***************************************************' },
timeout: 10000,
body: JSON.stringify({
audio: base64,
method: 'recognize',
return: 'lyrics,timecode'
})
}, function(error, result, body) {
console.log("here3");
if (error) {
console.log(error);
reject(error)
} else if (result.statusCode === 500) {
console.log('error');
reject(result.statusCode);
} else {
console.log(body);
resolve(body);
}
});
});
console.log("here4");
return promise;
};
在每个if中依此类推。
**编辑
Type&Level&tech是来自其他方法的字符串。 这段代码很简短,实际代码中每个if里都包含30个if else。
答案 0 :(得分:2)
根据您提供的信息,我可以假设,您可以这样做:
为级别创建字典,为类型创建字符串数组:
Dictionary<string, string> levels = new Dictionary<string, string>
{
{ "ground", "A" },
{ "UP", "B" },
};
string[] types = { "H", "E" };
然后假设您输入以下内容:
string tech = "2A";
string level = "ground";
string type = "H";
因此您现在可以执行以下操作:
if (types.Contains(type))
{
string result = $"{tech}{levels[level]}";
}
答案 1 :(得分:0)
我知道您希望代码更具可读性,所以这是我的看法。请注意,我假设您想保持逻辑不变,即当Type = E,Tech = 2B和Level = ground时,输出为3BB(与“ Tech”不完全匹配):
if (Type == "H" && (Tech == "2A" || Tech == "3A"))
{
if (Level == "ground")
return $"{Tech}A";
if (Level == "UP")
return $"{Tech}B";
}
else if (Type == "E" && Tech == "2B")
{
if (Level == "ground")
return "3BB";
if (Level == "UP")
return "3BC";
}