在Javascript中比较和组合数组

时间:2013-07-30 23:31:26

标签: javascript arrays comparison

我有三个阵列:

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:

因此,在将meetingsarraydates进行比较后,这将是最终结果。

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

我尝试使用以下for-loop解决此问题:

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

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

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

非常感谢任何帮助,

谢谢!

2 个答案:

答案 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]);
  }

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