Преобразовать массив объектов
Коллеги, подскажите как преобразовать массив объектов из
[{"Fio":"Ivanov","Date":"January 16","Parametr":"200"},{"Fio":"Petrov","Date":"January 16","Parametr":"300"},{"Fio":"Ivanov","Date":"February 16","Parametr":"100"},{"Fio":"Petrov","Date":"February 16","Parametr":"150"},{"Fio":"Ivanov","Date":"March 16","Parametr":"400"},{"Fio":"Petrov","Date":"March 16","Parametr":"500"},{"Fio":"Sidorov","Date":"March 16","Parametr":"300"}] в: [{"Month":"January","Ivanov":"200","Petrov":"300"},{"Month":"February","Ivanov":"100","Petrov":"150"},{"Month":"March","Ivanov":"400","Petrov":"500","Sidorov":}] |
Что является источником этого объекта?
|
masquitos@mail.ru,
ваши данные даже не скопировать Пожалуйста, отформатируйте свой код! Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
var a = [{ "Fio": "Ivanov", "Date": "January 16", "Parametr": "200" }, { "Fio": "Petrov", "Date": "January 16", "Parametr": "300" }, { "Fio": "Ivanov", "Date": "February 16", "Parametr": "100" }, { "Fio": "Petrov", "Date": "February 16", "Parametr": "150" }, { "Fio": "Ivanov", "Date": "March 16", "Parametr": "400" }, { "Fio": "Petrov", "Date": "March 16", "Parametr": "500" }, { "Fio": "Sidorov", "Date": "March 16", "Parametr": "300" }]; var months = {}; a.forEach(function(item) { months[ item['Date'] ] = true; }); var b = []; Object.keys(months).forEach(function(month) { var newObj = {}; newObj['Month'] = month.replace(/[\d+\s]/g, ''); a.forEach(function(obj) { if (obj['Date'] == month) { newObj[ obj['Fio'] ] = obj['Parametr']; } }); b.push(newObj); }); console.log( JSON.stringify(b) ); |
:)
<script> var data = [{ Fio: "Ivanov", Date: "January 16", Parametr: "200" }, { Fio: "Petrov", Date: "January 16", Parametr: "300" }, { Fio: "Ivanov", Date: "February 16", Parametr: "100" }, { Fio: "Petrov", Date: "February 16", Parametr: "150" }, { Fio: "Ivanov", Date: "March 16", Parametr: "400" }, { Fio: "Petrov", Date: "March 16", Parametr: "500" }, { Fio: "Sidorov", Date: "March 16", Parametr: "300" }], obj = {}, data = data.reduce(function(b, c) { var a = c.Date.split(" ")[0]; void 0 === obj[a] && (obj[a] = b.length, b[b.length] = {Month: a}); a = obj[a]; b[a][c.Fio] = c.Parametr; return b }, []); document.write(JSON.stringify(data)) </script> |
Рони, спасибо!
Ваш код работает, буду его изучать. |
Часовой пояс GMT +3, время: 04:35. |