Как получить доступ к элементу данных CSV-файла?

#javascript #csv #d3.js

#javascript #csv #d3.js

Вопрос:

В качестве набора данных у меня есть CSV-файл. Я использую приведенный ниже код для его загрузки :

var dataset = d3.csv("mydata.csv");

Мой вопрос в том, как я могу получить доступ к элементам внутри dataset var. Как я проверил, переменная dataset является объектом. Представьте, что мне нужен элемент данных в строке 4 и столбце 7, как я могу получить этот фрагмент данных?

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

1. это должен быть объект array, как [ {"Year": "1997", "Make": "Ford", "Model": "E350", "Length": "2.34"}, {"Year": "2000", "Make": "Mercury", "Model": "Cougar", "Length": "2.38"} ] указано в документации

Ответ №1:

набор данных будет доступен только в функции обратного вызова

 d3.csv("mydata.csv", function(dataset) {
   dataset = data;
   console.log(dataset)
});
  

Попробуйте что-то вроде этого.

Ответ №2:

Эта часть d3 является асинхронной, что означает, что ваш код javascript не сидит и не ждет выполнения этой инструкции, пока не будут загружены CSV-данные, к чему вы могли бы привыкнуть из других языков. Вместо этого вы указываете d3, какую функцию следует вызвать, как только данные станут доступны, и оттуда работаете с ней. Функция может быть либо определена в другом месте вашего кода, либо (что более типично) определена в вызове функции d3. Несколько примеров:

 /* Do something with every row */
d3.csv("mydata.csv", function(data) {
  /* Data has been read and is available as an array of 'row' objects */
  data.forEach(function(d) {
    /* Each row has the variable name 'd': 'columns' can be accessed as object properties */
    console.log( d['Column name']}); // d ensures conversion to numbers if that is what you need, at first everything is text
  }); //Close the function and .forEach(...) call
}); //Close the function AND the .csv(...) call

/* Just get one value */
d3.csv(csvfile, function(data) {
  /* Read data from row 4 and some column */
  console.log( data[3]['Column name']}); //As before, but I'm assuming you know the name of column '7'
}); //Close the function AND the .csv(...) call