2016-04-23 5 views
0

В этом блокеЧто это за дополнительный сеанс «разбора»? (Время форматирования D3)

https://bl.ocks.org/mbostock/1667367

Я вижу это

var parseDate = d3.time.format("%b %Y").parse; 

, который используется позже, как этот

function type(d) { 
    d.date = parseDate(d.date); 
    d.price = +d.price; 
    return d; 
} 

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

Когда я пытаюсь экспериментировать с этим синтаксисом в других консолях REPL, я получаю ошибку типа:

parseDate.parse is not a function 

ответ

2

Он разбирает строку даты.

https://github.com/mbostock/d3/wiki/Time-Formatting#parse

В контексте var parseDate = d3.time.format("%b %Y").parse;

parseDate.parse is not a function имеет смысл, потому что parseDate функция, не parseDate.parse. Вы называете это как parseDate('1/1/2016'), а не parseDate.parse('1/1/2016')

Вам не нужно вставлять parse в конец. Вы можете сделать

var parseDate = d3.time.format("%b %Y")

, а затем

parseDate.parse('1/1/2015).

Пример из документов D3.

var format = d3.time.format("%Y-%m-%d"); 
format.parse("2011-01-01"); // returns a Date 
format(new Date(2011, 0, 1)); // returns a string 

Это позволяет вам форматировать и анализировать строку. Первый пример позволяет вам анализировать.

+0

это описывает, как все должно нормально работать ... но я спрашивал, почему автор DID придерживался разбора в конце, но он не выбрал ошибку типа. – dwilbank

+0

Зачем ему бросать ошибку типа? –

+0

ОК, понял. Он выбрасывал ошибку типа, потому что я вызывал .parse SECOND, когда я разбирал дату. благодаря – dwilbank