2012-02-25 5 views
0

Я теряюсь в вложенных JSON и Coffeescript. У меня есть данные в формате JSON, который выглядит следующим образом:Понимание двумерного массива Coffeescript

{ 
"top-level": { 
    "first_array": [y1,y2,y3...], 
    "second_array: [y1,y2,y3...]... etc 
} 

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

"first_array": [[x: 0, y: y1],[x: 0, y: y2]...] 

А потом мне нужно возвращать только массив массивов

[[first_array], [second_array]] 

мне это нужно, чтобы работать, не зная, в явном виде названия «first_array» и т.д.

Я я попытался обобщить это, так как я думаю, что это всего лишь основной вопрос манипулирования данными по javascript, но если это полезно, я пытаюсь отформатировать данные для функции D3.js. d3.layout.stack используется здесь: http://bl.ocks.org/1134768

Спасибо!

+0

Не будет ли результирующий массив выглядеть следующим образом: ' "first_array": [[х: 0, y: y1], [x: 1, y: y2] ...] ' – jupp0r

+1

Массивы не могут иметь строковых индексов, поэтому это будет:' "first_array": [{x: 0, y: y1}, {x: 0, y: y2} ...] ' – Flambino

ответ

4

Я думаю, это то, что вы хотите достичь:

obj = {"top-level": {"first_array": ["y1","y2","y3"], "second_array": ["y1","y2","y3"]}} 
({x: xi, y: yi} for yi,xi in ar for name,ar of obj['top-level']) 

Урожайность

[ [ { x: 0, y: 'y1' }, 
    { x: 1, y: 'y2' }, 
    { x: 2, y: 'y3' } ], 
    [ { x: 0, y: 'y1' }, 
    { x: 1, y: 'y2' }, 
    { x: 2, y: 'y3' } ] ] 
Смежные вопросы