#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, это то, что вы хотели?