0

我有三个数组:

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'];

meetingdates 数组包含日期,其中有 1 个或多个会议。

var meetings = ['1', '3', '2', '4', '1', '5']

会议数组包含从 开始的日期的会议数量meetingdates

我想将dates数组与数组进行比较,如果存在meetings的条目我想将属于该日期的会议数放入新数组中,如果不匹配,将插入 0:meetingsarraydates

因此,meetingsarraydatesthis 进行比较后将是最终结果。

 meetingsPerDate =  ['1', '0', '3', '2', '4', '1', '0', '0'];

我尝试用以下方法解决这个问题for-loop

if(dates[y] == meetingdates [y]){
    meetingsPerDate [y] = meetings [y];
    }else {
         meetingsPerDate[y] = 0;
          }  
     }

我知道我会丢失一些数字,因为两个数组都没有遵循相同的模式,但我真的不知道如何解决这个问题。

我希望我已经很好地解释了我的问题,如果没有,请告诉我。

非常感谢任何帮助,

谢谢!

4

2 回答 2

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;
    }
}
于 2013-07-30T23:37:56.557 回答
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]);
  }

这个小循环正好返回我需要的东西。

于 2013-07-31T00:24:26.567 回答