- 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/
这个问题在这里已经有了答案: How does Scala's apply() method magic work? (3 个回答) 9年前关闭。 假设我在 scala 中有一个 MyList 类,其
这个问题在这里已经有了答案: What is a non-capturing group in regular expressions? (18 个回答) Reference - What does
这个问题是针对嵌入式系统的! 我有以下选项来初始化一个对象: Object* o = new Object(arg); 这会将对象放入堆中并返回指向它的指针。我不喜欢在嵌入式软件中使用动态分配。 Ob
我自己搜索过,没能成功的正则表达式。 我有一个 html 文件,其中包含 [] 之间的变量我想把每一个字都写进去。 [client_name][client_company] [cl
我是 Python 新手。我不明白为什么这段代码不起作用: reOptions = re.search( "[\s+@twitter\s+(?P\w+):(?P.*?)\s+]", d
在过去 7 个月左右的时间里,我几乎一直在使用 .NET C# 进行编程。在那之前,我的大部分编程都是用 C++(从学校里学的)。在工作中,我可能需要在接下来的几个月里做一大堆 C 语言。我对 C 的
我是 RE 的新手,我正在尝试获取歌词并分离出歌词标题、和声和主唱: 下面是一些歌词的例子: [Intro] D.A. got that dope! [Chorus: Travis Scott] Ic
这可能是不可能的,但我想检查是否可以用一种简单的方式表达这样的事情: // obviously doesn't work class Foo : IFoo where T: Bar {
我们的应用程序中有“user”和“study”实体,存储在它们各自的表中。一项研究代表一种研究和已收集的数据。它们是多对多的关系,所以我们需要一个链接表:studies_users。 我们为用户分配角
将测试条件添加到 Visual Studio 2010 数据库单元测试(对于 SQL Server 2008)时,这些条件称为例如rowCountCondition1、rowCountConditio
在模拟器上,我可以从设置中卸载 SD 卡。 然后我可以将它安装到我的操作系统上,然后正常卸载它。 我一直无法弄清楚如何在模拟器上重新安装它(无需重新启动)。 提示: adb 命令 remount 是无
假设在一个分支上执行了一系列提交,但该分支尚未与主干重新同步。是否可以从提交中生成全局补丁?是否可以从一系列提交中生成“分组”补丁?如果是,如何? 最佳答案 svn diff -rXXX:YYY UR
在某些情况下,我想在我的应用程序中锁定调整大小功能,为此我尝试对属性进行数据绑定(bind),并且不允许在某些情况下更改它,但没有成功。 有没有办法这样做? 这是我不成功的尝试: XAML: Vie
当我的计算机连接多个显示器时,我可以检测它们,并根据从获取的值设置位置来向它们绘制图形 get(0, 'MonitorPositions') 但是,当我在 MATLAB 运行时断开监视器时,此属性不会
我们有一个grails应用程序,该应用程序在grails数据库中存储了各种域对象。该应用程序连接到第二个数据库,运行一些原始sql,并在表中显示结果。它基本上是一个报告服务器。 我们通过在DataSo
无法比较来自不同容器的迭代器(参见这里的示例: https://stackoverflow.com/a/4664519/225186 )(或者从技术上讲,它不需要有意义。) 这就提出了另一个问题,来自
我有以下情况: 家长 Activity : ParentActivityClass { private Intent intent; @Override public void onCreate(Bu
我经常将元素与附加功能 Hook ,例如: $('.myfav').autocomplete(); $('.myfav').datepicker(); $('.myfav').click(somefu
因此,我将 tooltipster.js 库用于工具提示,并尝试更改工具提示在不同屏幕尺寸上的默认距离。 所以这是默认的 init 的样子: $(inputTooltipTrigger).tool
我在 ARM7 嵌入式环境中工作。我使用的编译器不支持完整的 C++ 功能。它不支持的一项功能是动态类型转换。 有没有办法实现dynamic_cast<>() ? 我使用 Google 寻找代码,但到
我是一名优秀的程序员,十分优秀!