IF语句650需要缩短

Endless JavaScript ELSE IF statement 650 Need shortening

本文关键字:语句 IF      更新时间:2023-09-26

我需要修改一些在我使用的程序中运行的脚本。

脚本只在带有X &Y轴。每当切换到新图表时,脚本将运行所有语句,直到找到与图表匹配的Symbol/name,然后加载行。

我使用永不结束的"if else语句"使事情对我来说尽可能简单。我有650个if else语句,每个语句包含数百个"addlines"。

符号名称之间没有关系,除了字母表中的字母。符号中包含的所有价格/数字都是随机的。

但是我正在寻找一个更好的解决方案,使它运行得更快,更有效,而不是有650个else if语句。我知道我用的命令不一样,我只是概括一下。我希望有人能帮忙。

将Else if语句乘以650,即有多少条。

var Symbol
if (Symbol == "AAB") {
    addline(37.5);
    addline(40.9);
    addline(15.5);
    addline(100.5);
    etc....
} else if (Symbol == "ZOB") {
    addline(15.8);
    addline(20.9);
    addline(100.5);
    addline(200.5);
    etc....
} else if (Symbol == "STX") {
    addline(10.9);
    addline(19.8);
    addline(5.5);
    addline(20.2);
    etc....
} else if (Symbol == "AXI") {
    addline(200);
    addline(20);
    addline(5.9);
    addline(9.9);
    etc....
} else if (Symbol == "AXI") {
    ETC.....
}
return;
}

可以使用map:

var SymbolMap = {
  AAB: [37.5, 40.9, 15.5, 100.5],
  ZOB: [15.8, 20.9, 100.5, 200.5],
  STX: [10.9, 19.8, 5.5, 20.2],
  AXI: [200, 20, 5.9, 9.9],
  // ...
};
var symbol = 'AAB';
SymbolMap[symbol].forEach(function(x) {
  addline(x);
});

您可以这样更改它,这样可能会执行得更好,并且更容易管理。

var Symbol = 'AAB';
var Symbols = {};
Symbols.AAB = [37.5, 40.9, 15.5, 100.5];
Symbols.ZOB = [15.8, 20.9, 100.5, 200.5];
Symbols.STX = [10.9, 19.8, 5.5, 20.2];
Symbols.AXI = [200, 20, 5.9, 9.9];
for(var x = 0; x < Symbols[Symbol].length; x++) {
    addline(Symbols[Symbol][x]);
}

无论你是否有意识地打算它,使用Java标签是一个好主意,因为我认为你最好的选择是创建一个REST服务,它接受一个符号名称并返回一个JSON结构的值,你的JS代码可以调用addline()

所以你可能会调用'YourWebApp'GetLines?Symbol=AAB, JSON响应可能看起来像:

{
    "lines": ["37.5", "40.9", "15.5", "100.5", ...]
}

然后可以遍历lines数组并对addline()进行适当的调用。

在JS代码中存储数百个if-else语句的状态可能是不是的好做法。我认为,如果可能的话,最好将业务逻辑保留在服务器端。