我有三个阵列:
var dates = ['07/31/2013', '08/01/2013', '08/02/2013', '08/03/2013', '08/04/2013', '08/05/2013', '08/06/2013', '08/07/2013'];
日期数组包含一周范围内的每个日期。
var meetingdates = ['07/31/2013', '08/02/2013', '08/03/2013', '08/04/2013', '08/05/2013', '08/07/2013'];
meetdates数组包含日期,其中有一个或多个会议。
var meetings = ['1', '3', '2', '4', '1', '5']
会议数组包含meetingdates
日期的会议数。
我想将dates
数组与meetings
数组进行比较,如果meetingsarray
中存在来自dates
的条目,我想将会议数量设为属于新数组中的该日期,如果不匹配,则将插入0:
因此,在将meetingsarray
与dates
进行比较后,这将是最终结果。
meetingsPerDate = ['1', '0', '3', '2', '4', '1', '0', '0'];
我尝试使用以下for-loop
解决此问题:
if(dates[y] == meetingdates [y]){
meetingsPerDate [y] = meetings [y];
}else {
meetingsPerDate[y] = 0;
}
}
我知道我会丢失一些数字,因为两个数组都没有遵循相同的模式,但我真的不知道如何解决这个问题。
我希望我已经很好地解释了我的问题,如果没有,请告诉我。
非常感谢任何帮助,
谢谢!
答案 0 :(得分:1)
使用对象而不是数组:
var meetings = {
'07/31/2013': 1,
'08/02/2013': 3,
'08/03/2013': 2,
'08/04/2013': 4,
'08/05/2013': 1,
'08/07/2013': 5
}
然后只需将新日期添加到其中:
var date;
for (var i = 0; i < dates.length; i++) {
date = dates[i];
if (date in meetings) {
meetings[date] += 1;
} else {
meetings[date] = 1;
}
}
答案 1 :(得分:0)
不确定这是否是最佳解决方案。但我设法找到了问题的答案:
for (var i = 0; i < dates.length; i++) {
var arrayIndex = meetingdates.indexOf(dates[i]);
if (arrayIndex == -1) {
console.log(dates[i] + ' ' + 0);
} else {
console.log(dates[i] + ' ' + meetings[arrayIndex]);
}
这个小循环正好返回我需要的东西。