如何在我的代码中优化条件语句

时间:2019-03-25 13:49:02

标签: javascript

我有一个名为 IIf( [Measures].[Measures].[Target Hours] = 0, NULL, ([Measures].[Actual Work]/[Measures].[Target Hours])) ```` Code above gives me expected output at Employee level but at Department level, i just want the sum of all output coming from Employee level. I don't want it to be calculated using above formula. 的2D数组,其中包含其他名为 userA userB userC userD ,只要我将它们推入其中即可:

extraRank

我想要的是一种有效的方法:

首先,检查// users arrays: userA = ["Sara Ree",18, "Doctor", "441", "31"]; userB = ["Marry",18, "Nurse", "41", "1"]; userC = ["John Doe",18, "Woker", "21", "31"]; userD = ["Alex Morph",18, "Musisian", "81", "51"]; // users arrays may be pushed to this array let extraRank = []; 中存在哪些用户数组。

然后,例如如果存在 userA ,请执行以下操作:

如果extraRank,则分配extraRank.indexOf(userA) == 0

如果userA_Index = 10;,则分配extraRank.indexOf(userA) == 1

如果userA_Index = 9;,则分配extraRank.indexOf(userA) == 2

如果userA_Index = 8;,则分配extraRank.indexOf(userA) == 3

我知道一种方法是为每个用户使用if语句,但是我想知道是否有更有效的方法...

2 个答案:

答案 0 :(得分:2)

如果分配是线性的(如您的示例所示),则可以进行简单的减法:

userA_index = 10 - extraRank.indexOf(userA)

如果更为复杂,则可以创建将索引连接到结果的地图对象,例如:

const mapIndexToOutput = {
  0: 10,
  1: 9,
  2: 8,
  3: 7,
  ...
}

userA_index = mapIndexToOutput[extraRank.indexOf(userA)]

答案 1 :(得分:1)

我不完全理解您的要求,但是简单的减法就能达到目的吗?

userA_Index = 10 - extraRank.indexOf(userA)

但是我不确定您要在这里实现什么。

编辑:您说要优化执行时间。这将比一堆if更有效率。但是,我认为即使10条if语句也不会引起注意。 您的代码现在有多慢?您有几个user? 您首先要在其他地方进行优化,但是如果没有更大的应用程序视野,很难说。