我正在使用 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];
这可能还可以进一步简化
关于javascript - Jquery - 匹配动态日期字符串使用长度返回匹配数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34984851/