У меня есть следующий объект (обратите внимание на закомментированные части, которые представляют данные, которые могут отсутствовать за этот год):
var data = {
"symbol": "AAPL",
"financials": [{
"date": "2019-09-28",
"Revenue": "2.60174e+11",
"EPS": "11.97",
},
{
"date": "2018-09-29",
"Revenue": "2.65595e+11",
"EPS": "12.01",
},
{
"date": "2017-09-30",
// "Revenue": "2.29234e+11",
// "EPS": "9.27",
},
{
"date": "2016-09-24",
"Revenue": "2.15639e+11",
// "EPS": "8.35",
},
{
"date": "2015-09-26",
"Revenue": "2.33715e+11",
"EPS": "9.28",
},
{
"date": "2014-09-27",
"Revenue": "1.82795e+11",
"EPS": "6.49",
},
{
"date": "2013-09-28",
"Revenue": "1.7091e+11",
"EPS": "40.03",
},
{
"date": "2012-09-29",
"Revenue": "1.56508e+11",
"EPS": "44.64",
},
{
"date": "2011-09-24",
"Revenue": "1.08249e+11",
"EPS": "28.05",
},
{
"date": "2010-09-25",
"Revenue": "65225000000.0",
"EPS": "15.41",
},
{
"date": "2009-09-26",
"Revenue": "42905000000.0",
"EPS": "1.317",
}
]
}
Как организовать это по строкам, чтобы окончательный вывод будет в виде:
["symbol", "financials.date", "financials.Revenue", "financials.EPS"]
["AAPL", "2019-09-28", "2.60174e+11", "11.97"]
["", "2018-09-29", "2.65595e+11", "12.01"]
["", "2017-09-30", "", ""]
["", "2016-09-24", "2.15639e+11", ]
["", "2015-09-26", "2.33715e+11", "9.28"]
["", "2014-09-27", "1.82795e+11", "6.49"]
["", "2013-09-28", "1.7091e+11", "40.03"]
["", "2012-09-29", "1.56508e+11", "44.64"]
["", "2011-09-24", "1.08249e+11", "28.05"]
["", "2010-09-25", "65225000000.0", "15.41"]
["", "2009-09-26", "42905000000.0", "1.317"]
например, я хочу, чтобы каждый элемент выстраивался в линию под соответствующим заголовком. Пока у меня есть:
var d = flatten(data);
var header = Object.keys(d);
console.log(header);
for (var key in d) {
var rows = [];
for (var i = 0; i < d[key].length; i++) {
if (Array.isArray(d[key])) {
rows.push(d[key][i]);
} else {
rows.push(d[key]);
}
}
console.log(rows);
}
Полный JS Бин можно найти здесь