Как я могу получить данные JSON с указанием конкретного года? - PullRequest
2 голосов
/ 03 апреля 2019

У меня есть структура данных json с Year и ее значением, и я буду отображать ее на своих старших графиках.

Как я могу отфильтровать это между годами? Пример, если я выберу в своем раскрывающемся списке период с 2016 по 2018 год, будут показаны только данные за 2016 и 2017 годы.

Вот моя структура данных

[
{
    "New_Students": "321",
    "NSYEAR": "2014",
    "NSterm": null,
    "NStermCat": null,
    "NSCareer": null,
    "NSProgDescr": null,
    "NSStudent": null
},
{
    "New_Students": "1923",
    "NSYEAR": "2015",
    "NSterm": null,
    "NStermCat": null,
    "NSCareer": null,
    "NSProgDescr": null,
    "NSStudent": null
},
{
    "New_Students": "293",
    "NSYEAR": "2016",
    "NSterm": null,
    "NStermCat": null,
    "NSCareer": null,
    "NSProgDescr": null,
    "NSStudent": null
},
{
    "New_Students": "29",
    "NSYEAR": "2017",
    "NSterm": null,
    "NStermCat": null,
    "NSCareer": null,
    "NSProgDescr": null,
    "NSStudent": null
},
{
    "New_Students": "524",
    "NSYEAR": "2018",
    "NSterm": null,
    "NStermCat": null,
    "NSCareer": null,
    "NSProgDescr": null,
    "NSStudent": null
}
    ]

и вот мой вывод.

enter image description here

Вот мой код для получения данных JSON

 var strCampus = "<%=MyProperty%>";
    var MyUpdateDate = "<%=UpdateDate%>";
    var ParamYear;
    var OnClickYearVal;
    var Year = [];
    var user_data = [];
    //Rdata.ParamYear = ParamYear;

 var drill_down_data = [];
    $(function () {
        $.getJSON('http://localhost:37590/get_NSData/' + strCampus, function (jsonData) { 


            const data = jsonData
            console.log(data);


let categories = [],
  series = [],
  i,
  j;
  var chartSeriesData = [];
  var chartDrilldownData = [];

     for (i = 0; i < data.length; i++) {

          categories[i] = data[i].NSYEAR + '-' + [parseFloat(data[i].NSYEAR) + 1];
          Year = [data[i].NSYEAR]
          series.push({
          name: [+data[i].NSYEAR] + ' School Year',
          data: [{ y: +data[i].New_Students }],

      });

      for (j = 0; j < i; j++) {
        series[i].data.unshift(null);
      }

  }

Заранее спасибо, помогите.

Ответы [ 3 ]

2 голосов
/ 04 апреля 2019

Вы можете использовать метод оси setExtremes, чтобы связать выпадающее событие с диапазоном диаграммы:

var chart = Highcharts.chart('container', {
    ...,
    xAxis: {
        minRange: 0,
        ...
    }
});

document.getElementById('selectFrom')
    .addEventListener('change', function() {
        chart.xAxis[0].setExtremes(Number(this.value), chart.xAxis[0].max);
    });

document.getElementById('selectTo')
    .addEventListener('change', function() {
        chart.xAxis[0].setExtremes(chart.xAxis[0].min, Number(this.value));
    });

Демонстрационная версия : http://jsfiddle.net/BlackLabel/xevgsjdo/

Справочник по API: https://api.highcharts.com/class-reference/Highcharts.Axis#setExtremes

1 голос
/ 03 апреля 2019

Используйте filter, а также typeOf NSYEAR - это string, поэтому вам нужно конвертировать в number:

    function getFilterDataBetweenYears(fromYear, toYear) {
        return data.filter(obj => {
            if (+obj["NSYEAR"] >= fromYear && +obj["NSYEAR"] <= toYear) {
                return obj;
            }
        });
    }
1 голос
/ 03 апреля 2019

Разобрать данные JSON и использовать Array.prototype.filter()

Например:

// allData is your parsed JSON data
const filteredByYear = allData.filter(function(single) {
    if (single["NSYEAR"] >= 2016 && single["NSYEAR"] <= 2018) {
        return single;
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...