- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
[我提前为问题的复杂性表示歉意……但是有什么好的问题是简单的呢?]
我负责管理一个大型(22 名成员)生产支持团队的待命名单。该列表是“全面升级”(列出所有团队成员),每月生成一次。由于靠近列表顶部的人被召集到隔夜问题(并且往往不可用),我们利用反向列表来创建我们的白天任务名册。
经过不合理的时间、政治和争论(不要问),一个相当愚蠢的规则集被创建并同意生成这个花名册。生成每日任务花名册:
“在待命列表中向后移动,选择列表中的“偶数”排名,并将它们按降序排列在第一位。然后对“几率”进行相同的操作,将它们放在花名册上。”
所以,一个简单的例子:
待命:“1-Jack、2-Jim、3-Jane、4-John、5-Jill、6-Joe”花名册:“1-Joe、2-John、3-Jim、4-Jill、3-Jane、1-Jack”
主要问题在于,由于休假、PTO、其他任务等时间,on-call 列表很少(可能有空位)。所以一个更真实的例子可能是:
待命:“1-Jack、3-Jane、4-John、6-Joe”花名册:“1-Joe、2-John、3-Jane、4-Jack
真实名单是22人。在任何给定的一天,我们平均有 17 或 18 个可用。失踪人员不会影响随叫随到 - 你只是继续移动到下一个最高 - 但他们让在名册规则内工作很痛苦。
目前我有这种工作蛮力风格。我首先创建一个代表待命对象的数组,其中每个对象都有一个人的姓名和待命等级。 (我确实突然想到,我可以通过创建一个仅包含索引代表实际排名的名称的稀疏数组来简化这一点……但我认为这不会改变问题)。
然后我从倒数第一循环遍历数组两次:首先收集偶数排名(通过获取排名的模数)并将它们插入新数组,然后收集赔率:
// Get the Current Oncall
var Oncall = new Array();
for ( var iCnt = 1; iCnt <= 22; iCnt++ ) {
var CurOncall = DataRows[Cnt].getAttribute("ows_OnCall" + iCnt);
if ( CurOncall != null ) {
Oncall[Oncall.length] = {"Name":CurOncall, "Rank": iCnt};
};
};
// Get the Current Roster
var Roster = new Array();
// Add the "evens"
for ( var iCnt = Oncall.length - 1; iCnt >= 0; iCnt-- ) {
// Get the Current Incident Rank
if ( Oncall[iCnt].Rank % 2 == 0 ) {
Roster[Roster.length] = Oncall[iCnt].Name;
};
}
// Add the "odds"
for ( var iCnt = Oncall.length - 1; iCnt >= 0; iCnt-- ) {
// Get the Current Incident Rank
if ( Oncall[iCnt].Rank % 2 != 0 ) {
Roster[Roster.length] = Oncall[iCnt].Name;
};
}
请注意,此片段存在于一个更大的循环中(我正在循环一周的数据,这只是一天)。 DataRows[Cnt] 是从 SharePoint 网络服务中提取的当天信息。
同样,这工作正常,但每天处理同一数据需要三个循环。
我想做的是到达 poing,在那里我可以使用单个循环从 on-call 生成花名册。直接进入,我一直致力于将第二个两个循环合并为一个。假设 Oncall 数组的生成与上面相同,这是我目前的尝试(有点难看):
var IncCnt = 1;
for ( var Cnt = OnCall.length - 1; Cnt >= 0; Cnt-- ) {
// Get the Current Incident (Roster) Rank
if ( OnCall[Cnt].Rank % 2 == 0 ) {
CurIncRank = Math.ceil(IncCnt / 2);
} else {
CurIncRank = Math.ceil(IncCnt / 2) + Math.floor(OnCall.length / 2)
};
Roster[CurIncRank] = OnCall[Cnt].Name;
// Increase the Incident Cnt
IncCnt = IncCnt + 1;
};
这接近工作,但往往会重叠(用第一个“奇数”覆盖最后一个“偶数”)或在偶数和奇数之间留下间隙,具体取决于元素的稀疏性和总数。
主要目标是在第一个循环中直接“即时”生成花名册,而不是创建一个特定的待命数组然后从中生成它 - 但目前我很乐意只获得第二个片段适用于所有情况。
我也对这可能无法工作的可能性持开放态度。也许不雅的规则集和不雅的数据的组合只需要蛮力方法。如果是这样的话,我宁愿在放弃之前从比我自己更好的程序员那里听到它。
提前致谢。随时要求任何澄清。
最佳答案
因此,如果我没看错的话,您有一个“onCall”对象数组,每个对象都包含一个名称和等级,如下所示:
var onCall = [
{
rank: 1,
name: 'Jack'
},
{
rank: 3,
name: 'Jill'
},
...
];
然后,您想要创建一个花名册数组,其中包含按降序排列的均匀排列的人,然后是按降序排列的奇数排列的人。如果这是正确的,那么下面的代码将产生这样一个数组:
for(var i = onCall.length-1; i >= 0; i--) {
person = onCall[i];
if(person.rank % 2 === 0) {
evens.push(person);
} else {
odds.push(person);
}
}
roster = evens.concat(odds);
你以相反的方式遍历数组一次。对于每个人,根据他们的排名将它们附加到“偶数”或“赔率”。最后,您只需将两个数组连接成一个新的“花名册”数组。
这是一个演示:
很抱歉,这不是用您的特定变量名编写的,但如果这是您正在寻找的,它应该很容易更改以适应您的环境。
关于javascript - 如何有效地将稀疏数组重新排序为新的非稀疏数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11990323/
在 Windows 世界中,什么是正确的名称。具有导出函数的老式 C++ DLL?不是 COM DLL,也不是 .NET DLL。我们以前通过调用 LoadLibrary() 和 GetProcAdd
目前我正在使用javaEE7,我有一个场景如下。在我的 JSF Web 应用程序中,我有一个事件监听器(不是 JSF 事件),当事件调用时,它会执行某些操作,然后将这些信息更新到我的 Web 应用程序
这不是 AJAX 请求/响应回调问题... 我正在使用 Dojo 1.5 构建网格。我正在尝试 dojo.connect具有功能的扩展/收缩按钮。我的问题是 grid.startup()在创建实际 D
非 Webkit Opera 是 very specific在某些功能中,因此通常通过 JavaScript 检测到 the following way . 但是,Opera Next 几乎是 Goo
我已查看以下链接中给出的所有日志,但未能找到 IP 地址: https://developer.couchbase.com/documentation/server/3.x/admin/Misc/Tr
我有一个命令行程序,它根据一组源文件生成一个我想在我的 Android gradle 构建 (A) 中使用的 jar 文件。这个命令行程序只是将一个 jar 文件存储在磁盘上的一个目录中。 我如何创建
下面的 htaccess 命令将所有非 www 转移到 http www RewriteEngine On RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^
我正在使用自定义链接器脚本将内核镜像分为两部分。第一个是普通代码和数据,第二个是初始化代码和不再需要时将被丢弃的数据。初始化部分也不像内核本身那样在地址空间之间共享,因此如果 fork() 仍然存在(
这个问题在这里已经有了答案: Several unary operators in C and C++ (3 个答案) What is the "-->" operator in C++? (29
假设我有一个类设置如下: class A { public: virtual void foo() { printf("default implementation\n"); } }; c
#include using namespace std; int main(int argc, char *argv[]) { int i=-5; while(~(i)) {
近期,百度搜索引擎变化无常,很多企业站、行业站、门户站、论坛等站点遭到了降权,特别是比比贴分类信息网直接遭到了拔毛,这对于广大站长来说是一种打击,也是各个企业、行业的打击。 至今,很多网站已经恢复
我现在正在使用 IBM TPM v1332 + IBM TSS v1470 并尝试将一些基本关键字/密码存储到 TPM 上的非 volatile 内存中。我找到了两种方法。一种是创建一个密封对象并使用
我的 PHP 脚本中有一个正则表达式,如下所示: /(\b$term|$term\b)(?!([^)/iu 这与 $term 中包含的单词匹配,只要前后有单词边界并且它不在 HTML 标记内即可。 但
我想显示用户名称地址(请参阅 www.ipchicken.com ),但我唯一能找到的是 IP 地址。我尝试了反向查找,但也没有用: IPAddress ip = IPAddress.Parse(th
只有 UI 线程能够显示到屏幕上,还是其他线程也可以这样做? 最佳答案 不,您只能直接从 UI 线程访问 UI,但您可以编码来自其他线程的结果,例如使用 Control.Invoke 或 contro
我正在使用现代 Excel 滚动条(不是旧的 ActiveX 类型,即开发人员 > 插入 > 表单控件 > 滚动条)并且想检测它的值何时更改。我找不到有关此类对象的更改事件的任何信息。您可以在单击时分
当我使用这段代码时 IE 6 确实正确使用了指定的样式表,但所有其他浏览器在应该使用基本上声明的样式表时会忽略这两种样式表,如果您不是 IE,请使用此样式表。 有什么想法吗? 最佳答案 n
我想指定 2 mssql 表之间的关系。 付款类别和付款。 paymentcategory.id 加入 payout.category 列。 在 payout.json 模型中 我指定为外键:id,
我正在尝试制作非 volatile UDF,但似乎不可能。因此,这是我非常简单的test-UDF: Option Explicit Dim i As Integer Sub Main() i = 0
我是一名优秀的程序员,十分优秀!