Структура данных, возвращаемая d3.csvParse

Oct 12 2020

В d3.js функция csvParse работает так:

d3.csvParse("foo,bar\n1,2\n2,3"); 
// [{foo: "1", bar: "2"}, {foo: "2", bar:"3"}, columns: ["foo", "bar"]]

Q1 : Какое имя структуры возвращаемых данных? особенно свойства "столбцов"?

Вне d3.js, если я это сделаю

var data = [{foo: "1", bar: "2"}, {foo: "2", bar:"3"}, columns: ["foo", "bar"]]
//uncaught syntaxerror unexpected token ':'

Q2 : Почему ошибка? Как обойти?

Ответы

1 GerardoFurtado Oct 12 2020 at 05:16

Результат, который вы видите, представляет собой обычный массив JavaScript и columnsявляется просто свойством этого массива. В JavaScript массивы могут иметь свойства.

Если вы посмотрите исходный код , вы увидите следующее:

var rows = []

А потом:

rows.columns = columns || [];

Вот очень простой пример:

const arr = [1, 2, 3, 4, 5];
arr.columns = "foo";
console.log(arr)

Посмотрите на консоль вашего браузера (не на фрагмент), вы увидите это (в Chrome и Firefox, но не в Safari):

[1, 2, 3, 4, 5, columns: "foo"]

По поводу вашей ошибки ...

// неперехваченный синтаксическая ошибка неожиданный токен ':'

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