我有一个名为 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语句,但是我想知道是否有更有效的方法...
答案 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
?
您首先要在其他地方进行优化,但是如果没有更大的应用程序视野,很难说。