Подсчитайте, сколько раз определенная дата появляется в JSON

#javascript #json #date #count #repeat

Вопрос:

Доброе утро, ребята,

У меня есть переменная 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 в многострочную диаграмму, чтобы каждый код ошибки отображался в виде имени в строке.

#2: Укажите на Y количество раз, когда возникает код ошибки для этой конкретной даты.

#3: Укажите на X дату метки для каждого отдельного дня внутри JSON.

Вопрос: Как мне подсчитать, сколько раз определенный день присутствует в 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();
 

Комментарии:

1. Первое, что вам следует сделать, это проанализировать JSON, чтобы у вас был массив объектов…

2. Вашим первым шагом будет использование JSON.parse

Ответ №1:

сначала вы должны преобразовать json в объект

 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 }
*/

 

Комментарии:

1. Спасибо. Как я могу настроить его так, чтобы он сравнивал содержимое внутри кавычек только после «Дата:», не сообщая ему напрямую одну конкретную дату, и добавить эту переменную (в данном случае LEN) на диаграмму?

2. Я отредактировал код som, это то, что вы хотели?