【问题标题】:Count how many times a specific Date appears in a JSON计算特定日期在 JSON 中出现的次数
【发布时间】:2021-03-25 12:46:18
【问题描述】:

早安,

我有一个变量 convertedObjChart 包含以下代码,每次前端用户选择不同的时间段时都会更新:

"[{\"ErrorCode\":\"4212\",\"Date\":\"2019-12-17\"},{\"ErrorCode\":\"1\",\"Date\":\"2020-01-23\"},{\"ErrorCode\":\"4233\",\"Date\":\"2020-02-21\"},{\"ErrorCode\":\"4233\",\"Date\":\"2020-02-24\"},{\"ErrorCode\":\"1\",\"Date\":\"2020-07-02\"},{\"ErrorCode\":\"1006\",\"Date\":\"2020-07-15\"},{\"ErrorCode\":\"4245\",\"Date\":\"2020-07-16\"},{\"ErrorCode\":\"9420\",\"Date\":\"2020-08-17\"},{\"ErrorCode\":\"9450\",\"Date\":\"2020-08-17\"},{\"ErrorCode\":\"1\",\"Date\":\"2020-11-09\"},{\"ErrorCode\":\"4\",\"Date\":\"2020-11-09\"},{\"ErrorCode\":\"4245\",\"Date\":\"2020-11-09\"}]";

#1:需要将这个JSON字符串输入到一个多折线图中,所以每个ErrorCode在一个name中显示为一个name行。

#2:表示在 Y 上 ErrorCode 在特定日期发生的次数。

#3:在 X 上表示 JSON 中每一天的标签 Date。

问:我如何计算某一天在 JSON 中出现的次数?

请注意,每次用户更新所选时间段时,此字符串的长度都会发生变化,根据在该时间段内发现的错误数量而变大或变小。

这是我用于测试的图表(不是正确的,因为只有一行):

var chart = new CanvasJS.Chart("chartContainer", {
            theme: "light2", // "light1", "light2", "dark1", "dark2"
            animationEnabled: true,
            zoomEnabled: true,
            title: {
                text: "Try Zooming and Panning"
            },
            data: [{
                type: "line",
                dataPoints: convertedObjChart,
            }]
        });
      
        chart.render();

【问题讨论】:

  • 你应该做的第一件事是解析 JSON,这样你就有一个对象数组......
  • 您的第一步是使用JSON.parse

标签: javascript json date count repeat


【解决方案1】:

你应该先将 json 转换成 Object

const jsonData =
  '[{"ErrorCode":"4212","Date":"2019-12-17"},{"ErrorCode":"1","Date":"2020-01-23"},{"ErrorCode":"4233","Date":"2020-02-21"},{"ErrorCode":"4233","Date":"2020-02-24"},{"ErrorCode":"1","Date":"2020-07-02"},{"ErrorCode":"1006","Date":"2020-07-15"},{"ErrorCode":"4245","Date":"2020-07-16"},{"ErrorCode":"9420","Date":"2020-08-17"},{"ErrorCode":"9450","Date":"2020-08-17"},{"ErrorCode":"1","Date":"2020-11-09"},{"ErrorCode":"4","Date":"2020-11-09"},{"ErrorCode":"4245","Date":"2020-11-09"}]'

let data = JSON.parse(jsonData)

let calculatedResult = new Object()
data.forEach((d) => {
  calculatedResult[d.Date] = calculatedResult[d.Date]
    ? ++calculatedResult[d.Date]
    : 1
})
console.log(calculatedResult)
/**
it print out { '2019-12-17': 1,
  '2020-01-23': 1,
  '2020-02-21': 1,
  '2020-02-24': 1,
  '2020-07-02': 1,
  '2020-07-15': 1,
  '2020-07-16': 1,
  '2020-08-17': 2,
  '2020-11-09': 3 }
*/

【讨论】:

  • 谢谢。如何将其设置为仅比较“日期:”之后引号内的内容而不直接告诉它一个特定日期并将该变量(在本例中为 LEN)添加到图表中?
  • 我编辑了 som 代码,是你想要的吗?
猜你喜欢
  • 1970-01-01
  • 2020-01-23
  • 2021-09-24
  • 2016-01-09
  • 2019-07-06
  • 1970-01-01
  • 1970-01-01
  • 2015-07-24
  • 2022-12-22
相关资源
最近更新 更多