在JSON中按日期显示数组出现的次数
Display array occurrences by date in JSON
我希望通过JSON数组进行迭代,以按日期查找给定项目的出现次数。为了说明这一点,我有以下JSON:
"data": [
{
"tags": [
"foo",
"bar",
"hello",
"world",
"alice"
],
"date": [
1402876800000
],
...
},
{
"tags": [
"foo",
"world",
"alice"
],
"date": [
1402963200000
],
...
}
我想做的是能够调用一个函数,该函数接受标签的输入(例如'foo'),并将该标签在特定日期出现的次数写入HTML。所以调用tagOverTime('foo')
会得到这样的结果:
06/16/14 - 14次
06/17/14 - 8次
我也想格式化日期,但我相信我可以在某个时候用toLocaleDateString()
自己做到这一点。就目前而言,我可以遍历数组,但不能进行其他操作。这是我目前所看到的:
$.getJSON('mydata.json', function(data) {
function containsObject(obj, list) {
var i;
for (i = 0; i < list.length; i++) {
if (list[i] === obj) {
return true;
}
}
return false;
}
function tagOverTime(tagtosearch) {
var output="<h4>" + tagtosearch + "</h4><ul>";
for(var i = 0 ; i< data.data.length; i++){
var obj = data.data[i];
var tagsArray = obj["tags"];
// make sure tag array isn't empty
if( tagsArray != undefined ) {
// then iterate through it
for(var j = 0; j < tagsArray.length;j++ ){
// if that tag exists in the given tags array, check its date and count up somehow
if(tagsArray[j] == tagtosearch){
output+='<li>' + obj.date + '</li>';
}
}
}
}
output+="</ul>";
document.getElementById("output").innerHTML=output;
}
tagOverTime('foo');
但我知道这是不对的,因为它只是输出一个无序的日期列表;我在编写代码时意识到了这一点,但不确定如何计算特定的日期。
function tagOverTime(tagToSearch) {
var output="<h4>" + tagtosearch + "</h4><ul>";
var byDate = {};
for (var i = 0; i < data.data.length; i++) {
var obj = data.data[i];
var tagsArray = obj.tags;
if (tagsArray && containsObject(tagToSearch, tagsArray) {
if (byDate[obj.date]) { // Have we already seen this date?
byDate[obj.date]++;
} else { // No, initialize it to 1
byDate[obj.date] = 1;
}
}
}
for (var date in byDate) {
output += '<li>' + date + ' - ' + byDate[date] + ' occurrences</li>';
}
output += '</ul>';
document.getElementById("output").innerHTML=output;
}
相关文章:
- json数组显示在<李>使用angular js
- AngularJS错误处理:根据错误数组显示错误
- 在 MVC3 中将字节数组显示为图像
- Highcharts使用数组显示每个气泡点的附加信息
- 如何使用数组显示文本
- 对于数组 {{显示项目}} 中的每个项目
- 将 PHP 数组显示为动画
- 如何将多维数组显示为表格
- MongoDb - 具有空值的有界数组显示无界
- 如何在谷歌地图中使用地址数组显示信息窗口和折线
- 如何从查询中将json数组显示为重复区域
- 根据布尔数组显示或隐藏jQuery元素
- 初学者javascript;for循环,对象数组显示为未定义
- JavaScript数组显示10个图像,然后显示下一个10个
- JS数组显示不正确
- Meteor:如何在html页面上使用光标数组显示列表
- Javascript发布数组显示语法错误
- PHP数组到JavaScript数组显示[object,object]
- 如何使用数组显示循环中的文本
- Javascript数组显示