09.06.2014, 14:13
|
Профессор
|
|
Регистрация: 04.10.2010
Сообщений: 571
|
|
Как преобразовать объект в упорядоченный массив
Нужно преобразовать такой объект
{
ru: {
pos:1,
title:'Русский'
},
en: {
pos:3,
title:'English'
},
de: {
pos:2,
title:'Deutsch'
}
}
В такой массив
[
{
code: 'ru',
title:'Русский'
},{
code: 'de',
title:'Deutsch'
},{
code: 'en',
title:'English'
},
]
Есть какой-нибудь элегантный способ?
|
|
09.06.2014, 14:21
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Shitbox2,
var data = {
ru: {
pos:1,
title:'Русский'
},
en: {
pos:3,
title:'English'
},
de: {
pos:2,
title:'Deutsch'
}
}, arr = [] ;
Object.keys(data).forEach(function (key) {
arr[data[key]['pos']-1]={code: key, title : data[key]['title']}
});
alert(JSON.stringify(arr))
Последний раз редактировалось рони, 09.06.2014 в 14:24.
|
|
09.06.2014, 14:28
|
Профессор
|
|
Регистрация: 04.10.2010
Сообщений: 571
|
|
Мое решение было таким
var input = {
ru: {
pos:1,
title:'Русский'
},
en: {
pos:3,
title:'English'
},
de: {
pos:2,
title:'Deutsch'
}
};
var output = [];
for (key in input) {
if (input.hasOwnProperty(key)) {
output[input[key].pos - 1] = input[key];
output[input[key].pos - 1].code = key;
delete output[input[key].pos - 1].pos;
}
}
alert(JSON.stringify(output));
|
|
09.06.2014, 16:35
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,585
|
|
Shitbox2, ну и правильно. Оно и быстрее и логичнее.)
__________________
29375, 35
|
|
09.06.2014, 16:50
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
На правах рекламы
<html>
<head>
<script src="http://www.collection-js.com/files/collection/collection.min.js"></script>
</head>
<body><script>
var result = $C({
ru: {
pos: 1,
title: 'Русский'
},
en: {
pos: 3,
title: 'English'
},
de: {
pos: 2,
title: 'Deutsch'
}
}).map(function (el, key) {
return {code: key, title: el.title};
}, {initial: []});
alert(JSON.stringify(result));
</script></body>
</html>
Последний раз редактировалось kobezzza, 09.06.2014 в 17:18.
|
|
09.06.2014, 16:59
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
kobezzza,
a pos где?
|
|
09.06.2014, 17:00
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от рони
|
kobezzza,
a pos где?
|
Дык, ТС же написал, что ему он не нужен в элементах массива. Ну и не суть, думаю всем очевидно, как вставить туда pos
Последний раз редактировалось kobezzza, 09.06.2014 в 17:02.
|
|
09.06.2014, 17:06
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,585
|
|
kobezzza, ну да, сразу о том подумал.)
__________________
29375, 35
|
|
09.06.2014, 17:09
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Сообщение от kobezzza
|
думаю всем очевидно, как вставить туда pos
|
мне непонятно - можно пример чтоб ваш код выдал тоже
что во 2 и 3 постах?
|
|
09.06.2014, 17:17
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от рони
|
мне непонятно - можно пример чтоб ваш код выдал тоже
что во 2 и 3 постах?
|
Он и так выдаёт такой же результат. Сделал пример запускаемым.
|
|
|
|