检查键值对的一部分

时间:2018-11-27 20:51:19

标签: javascript json

我目前正在尝试开发一个显示纽约市停车罚单的应用程序。我使用的API是https://data.cityofnewyork.us/resource/ati4-9cgt.json。我正在尝试创建一个图表,其中显示了每月分配了多少张票。有一个称为“ issue_date”的列,它包含年,月,后跟一堆我不确定的数字。是否可以只检查年和月部分,而不是整个值?例如,如果我只想查看票证是否在1月发行,我将检查2017-01,但是我将如何处理以确保不计入剩余价值并破坏代码?谢谢!

我忘了说自己是大学一年级学生。我对编程的知识有限,给您带来的不便深感抱歉。

2 个答案:

答案 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;
}, {})

https://jsfiddle.net/d3qa96bg/1/