21.04.2016, 15:14
|
Новичок на форуме
|
|
Регистрация: 21.04.2016
Сообщений: 5
|
|
Преобразовать массив объектов
Коллеги, подскажите как преобразовать массив объектов из
[{"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, 21.04.2016 в 18:08.
|
|
21.04.2016, 15:23
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Что является источником этого объекта?
|
|
21.04.2016, 15:24
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
masquitos@mail.ru,
ваши данные даже не скопировать
Пожалуйста, отформатируйте свой код!
Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]
О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
|
|
21.04.2016, 16:38
|
Профессор
|
|
Регистрация: 31.01.2015
Сообщений: 576
|
|
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) );
|
|
21.04.2016, 16:44
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
<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>
|
|
21.04.2016, 18:11
|
Новичок на форуме
|
|
Регистрация: 21.04.2016
Сообщений: 5
|
|
Рони, спасибо!
Ваш код работает, буду его изучать.
|
|
|
|