Jquery - 匹配动态日期字符串 return 使用长度匹配的数量

Jquery - Match a dynamic date string return the amount of matches using length

我正在使用 MorrisJS 构建图表,到目前为止它已经出现了。我目前遇到 jquery 脚本的问题。我正在尝试匹配一个日期字符串并让它 return 使用 .lenght 找到的匹配数量。由于某种原因,它总是 returns 0.

我在 jsfiddle 中重现了这个问题。 https://jsfiddle.net/awo5aaqb/2/

这是目前给我带来麻烦的代码:

var dates = element.created_date.slice(0,-9);
var count_2015 = $(dates).find('2015'+element.created_date.slice(5,-9)).length;
var count_2016 = $(dates).find('2016'+element.created_date.slice(5,-9)).length;

var obj = { "m": dates, "a": count_2015, "b":count_2016 };

我想做的是告诉 jquery 获取我的日期 (2016-10-01 07:40) 我预先将它们切片以仅重新计算年份和月份 (2016-10)。然后我获取切片结果,我想找到匹配年份和月份的结果以及 return 它找到了多少匹配项。它总是 returns 0。当我 运行 a console.log(count_2015) 我看到它 returns 结果 0 大约 40 次。

有没有人明白为什么要这样做?

您正在尝试对字符串使用 jQuery DOM 方法,但这行不通

这是一种方法,首先循环数据以创建一个对象来计算每年的每个月

var dateCounts = {} 
data.d.results.forEach(function(element) {
      var date = element.created_date.slice(0, 7);
      var yr = date.slice(0, 4);
      if (!dateCounts.hasOwnProperty(yr)) {
        dateCounts[yr] = {}
      }
      if (!dateCounts[yr].hasOwnProperty(date)) {
        dateCounts[yr][date] = 0
      }
      dateCounts[yr][date]++;

});

创建如下对象:

 {'2015':{'2015-10':3,  ....}, '2016':{'2016-10':9,  ....}}

然后获取您的图表计数:

替换:

var dates = element.created_date.slice(0,-9);
var count_2015 = $(dates).find('2015'+element.created_date.slice(5,-9)).length;
var count_2016 = $(dates).find('2016'+element.created_date.slice(5,-9)).length;

有:

  var date = element.created_date.slice(0, 7);
  var yr = date.slice(0, 4);
  var count_2015 = dateCounts['2015'][date];
  var count_2016 = dateCounts['2016'][date];

这可能还可以进一步简化

DEMO