我目前正在尝试开发一个显示纽约市停车罚单的应用程序。我使用的API是https://data.cityofnewyork.us/resource/ati4-9cgt.json。我正在尝试创建一个图表,其中显示了每月分配了多少张票。有一个称为“ issue_date”的列,它包含年,月,后跟一堆我不确定的数字。是否可以只检查年和月部分,而不是整个值?例如,如果我只想查看票证是否在1月发行,我将检查2017-01,但是我将如何处理以确保不计入剩余价值并破坏代码?谢谢!
我忘了说自己是大学一年级学生。我对编程的知识有限,给您带来的不便深感抱歉。
答案 0 :(得分:1)
您可以只抓取日期中的前7个字符。
下面是一些代码,用于计算每月的条目数并将其放入数组中:
fetch("https://data.cityofnewyork.us/resource/ati4-9cgt.json")
.then(resp => resp.json()).then(data => {
const byMonth = Object.entries(data.reduce( (acc, row) => {
const month = row.issue_date.slice(0,7); // <--- just taking YYYY-MM
acc[month] = acc[month] || 0;
acc[month]++; // <--- counting
return acc;
}, {})).sort((a, b) => a[0].localeCompare(b[0])); // <--- sorting months
console.log(byMonth); // <--- output [[month, count], [month, count], ...]
});
答案 1 :(得分:0)
与regexp匹配,例如/^2017-01/
因此,如果您拥有整个阵列,则可以:onlyOnJanuary2017 = wholeArray.filter(object => object.issue_date.match(/^2017-01/));
,如下所示:https://jsfiddle.net/twpq6nvd/
此外,如果您想对它们进行存储操作,请尝试
var result = arr.reduce((accumulator, item) => {
const date = new Date(item.issue_date)
var key = `${date.getFullYear()}-${date.getMonth()}`
accumulator[key] = accumulator[key] || [];
accumulator[key].push(item);
return accumulator;
}, {})