Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.06.2014, 14:13
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 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'
  },
]


Есть какой-нибудь элегантный способ?
Ответить с цитированием
  #2 (permalink)  
Старый 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.
Ответить с цитированием
  #3 (permalink)  
Старый 09.06.2014, 14:28
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 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));
Ответить с цитированием
  #4 (permalink)  
Старый 09.06.2014, 16:35
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,585

Shitbox2, ну и правильно. Оно и быстрее и логичнее.)
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 09.06.2014, 16:50
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 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
code monkey

Последний раз редактировалось kobezzza, 09.06.2014 в 17:18.
Ответить с цитированием
  #6 (permalink)  
Старый 09.06.2014, 16:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

kobezzza,
a pos где?
Ответить с цитированием
  #7 (permalink)  
Старый 09.06.2014, 17:00
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от рони Посмотреть сообщение
kobezzza,
a pos где?
Дык, ТС же написал, что ему он не нужен в элементах массива. Ну и не суть, думаю всем очевидно, как вставить туда pos
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 09.06.2014 в 17:02.
Ответить с цитированием
  #8 (permalink)  
Старый 09.06.2014, 17:06
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,585

kobezzza, ну да, сразу о том подумал.)
__________________
29375, 35
Ответить с цитированием
  #9 (permalink)  
Старый 09.06.2014, 17:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от kobezzza
думаю всем очевидно, как вставить туда pos
мне непонятно - можно пример чтоб ваш код выдал тоже
что во 2 и 3 постах?
Ответить с цитированием
  #10 (permalink)  
Старый 09.06.2014, 17:17
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от рони Посмотреть сообщение
мне непонятно - можно пример чтоб ваш код выдал тоже
что во 2 и 3 постах?
Он и так выдаёт такой же результат. Сделал пример запускаемым.
__________________
kobezzza
code monkey
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как преобразовать строку в объект axmed2004 Общие вопросы Javascript 4 20.11.2012 16:02
как добавить свойство объекта в объект в объекте ? %) mitiya Общие вопросы Javascript 1 07.10.2012 14:46
jQuery (Как открыть объект в этом же окне, щёлкнув по нему мышкой) Объект кусок карты hadzhimuratov (X)HTML/CSS 32 18.06.2012 17:54
Массив как часть параметра diprom Javascript под браузер 3 21.09.2011 00:08
Как лучше сделать глобальный массив skyfish AJAX и COMET 4 17.02.2009 18:05