проблема с d3.js обновление столбчатой диаграммы

#javascript #arrays #d3.js #nested

#javascript #массивы #d3.js #вложенный

Вопрос:

Я пытаюсь создать гистограмму, которая обновляется в цикле с данными, которые у меня есть в файле json, но я не могу получить доступ к данным JSON data, потому что внутри массива вложен массив

 //X Scale
var x = d3.scaleBand()
    .domain(['Black', 'Hispanic', 'Other', 'White'])
    .range([0, width])
    .padding(0.2);

//Y Scale
var y = d3.scaleLinear()
    .domain([0, 120000])
    .range([height, 0]);

//X Axis
var xAxisCall = d3.axisBottom(x);
g.append('g')
    .attr('class', 'x axis')
    .attr('transform', 'translate(0,'   height   ')')
    .call(xAxisCall);

//Y axis
var yAxisCall = d3.axisLeft(y)
    .tickFormat(function(d){return '$'   d; })
g.append('g')
    .attr('class', 'y axis')
    .call(yAxisCall);

//Bars
var rects = g.selectAll('rect')
    .data(data[0])
    var groupOne = data[0];


//Problem is below
    console.log(groupOne.standings[0]);
    rects.enter()
        .append('rect')
            .**attr('y', function(d){return y(data[0].standings); })
            .attr('x', function(d){return x(d.standings) })
            .attr('width', function(d){return height - y(data[0].standings);})**
            .attr('width', x.bandwidth)
            .attr('fill', 'grey');


//Here is a sample of the json data
[
  {
    "standings": [
      {
      "Black": 36815,
      "Hispanic": 39742,
      "Other": 58884,
      "White": 86229
    }
    ],
    "year": "1989"
  },
  

моя гистограмма должна отображать значения, перечисленные для турнирной таблицы по столбцам, что в конечном итоге позволит мне обновлять диаграмму каждый год.

Ответ №1:

Ваш фрагмент кода не закрывает все круглые скобки, но, похоже, data[0] — это элемент массива, представляющий собой объект с двумя атрибутами: турнирная таблица и год. Итак, чтобы ссылаться на число 36815 в вашем примере, ваша ссылка — данные [0].таблица [0].Черный. Между тем ваша ссылка на 1989 год — data[0].year