2013-07-30 53 views
0

合并阵列我有三个数组:比较和Javascript中

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数组包含日期,其中有一个或多个会议。

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

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

我想将dates阵列与meetings阵列相比,如果dates存在从meetingsarray一个条目我希望把属于该日期在新数组的会议次数,如果世界上没有匹配的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; 
      } 
    } 

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

我希望我已经解释了我的问题,如果不是,请让我知道。

任何帮助是非常赞赏,

谢谢!

回答

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; 
    } 
} 
+0

感谢您的输入!但我设法自己找到了解决方案。 – Jef

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

这个小循环返回正是我所需要的。