Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 09.06.2014, 17:22
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

kobezzza, да нет же, от pos зависит позиция в массиве, так что тут надо хитрее делать.)
__________________
29375, 35
Ответить с цитированием
  #12 (permalink)  
Старый 09.06.2014, 17:26
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от Aetae Посмотреть сообщение
kobezzza, да нет же, от pos зависит позиция в массиве, так что тут надо хитрее делать.)
Понял, не внимательно прочитал задание, но всё равно, всё просто

<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'
   }

}).reduce(function (result, el, key) {
    result[el.pos - 1] = {code: key, title: el.title};
    return result;
}, []);

alert(JSON.stringify(result));

</script></body>
</html>
__________________
kobezzza
code monkey
Ответить с цитированием
  #13 (permalink)  
Старый 09.06.2014, 17:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,132

kobezzza,
ок уже ок
Ответить с цитированием
  #14 (permalink)  
Старый 09.06.2014, 18:02
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Все делают через result[el.pos - 1]. Для этого примера это ОК, но если мы будем добавлять позиции асинхронно, или номер позиции окажется не числом, то в массиве появятся дыры.

Как сделать, чтобы эти ситуации тоже предусматривались?
Ответить с цитированием
  #15 (permalink)  
Старый 09.06.2014, 18:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,132

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.push({code: key, title : data[key]['title'],pos : data[key]['pos']})
});
arr.sort(function (a, b)
{
  return a.pos - b.pos
})
alert(JSON.stringify(arr))
Ответить с цитированием
  #16 (permalink)  
Старый 09.06.2014, 18:23
Аватар для 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: 'ha ha ha!!!',
        title: 'Русский'
   },

   en: {
       pos: 30,
       title: 'English'
   },

   de: {
       pos: 2,
       title: 'Deutsch'
   }

}).reduce(function (result, el, key, data, i, length) {

    if (!isNaN(Number(el.pos))) {
        result[el.pos - 1] = {code: key, title: el.title};
    }

    if (i !== length() - 1) {
        return result;
    }

    return $C(result).filter(function (el) { return el !== void 0; });

}, []);

alert(JSON.stringify(result));

</script></body>
</html>
__________________
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