javascript - Jquery - 匹配动态日期字符串使用长度返回匹配数量

标签 javascript jquery morris.js

我正在使用 MorrisJS 构建一个图表,到目前为止它已经完成了。我现在遇到了 jquery 脚本的问题。我尝试匹配日期字符串并让它返回使用 .lenght 找到的匹配数量。由于某种原因它总是返回 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)。然后,我获取切片结果,我想找到与年份和月份匹配的结果,并返回找到的匹配数。它总是返回 0。当我运行 console.log(count_2015) 时,我看到它返回结果 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

关于javascript - Jquery - 匹配动态日期字符串使用长度返回匹配数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34984851/

相关文章:

javascript - 如何缩小莫里斯条形图之间的差距

Javascript - 获取声音数据

javascript - 棋盘模式(空格和零)不适用于 JQuery

php - 使用 WordPress Super Cache 从缓存中排除动态值

javascript - 将事件位置映射到非文本字段中的文本位置

javascript - 在 Firefox 中使用 morris.js 脚本不再回答任何错误

javascript - 发送 Raphael set toFront();或 toBack();不改变集合内的顺序

javascript - Ajax 响应在第一次调用后始终返回 2

javascript - jQuery - 像单选按钮一样的复选框

javascript - 如何将 JSON 数组从 php 传递到 JS?