| 
	| 
	
	| 
		
	| 
			
			 
			
				09.06.2014, 17:22
			
			
			
		 |  
	| 
		
			|  | Тлен       |  | 
					Регистрация: 02.01.2010 
						Сообщений: 6,601
					 
		
 |  |  
	| kobezzza, да нет же, от pos зависит позиция в массиве, так что тут надо хитрее делать.) 
				__________________ 29375, 35
 |  |  
	| 
		
	| 
			
			 
			
				09.06.2014, 17:26
			
			
			
		 |  
	| 
		
			|  | Быдлокодер;)       |  | 
					Регистрация: 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>
 |  |  
	| 
		
	| 
			
			 
			
				09.06.2014, 17:47
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| kobezzza,ок уже ок
 |  |  
	| 
		
	| 
			
			 
			
				09.06.2014, 18:02
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 04.10.2010 
						Сообщений: 571
					 
		
 |  |  
	| Все делают через result[el.pos - 1]. Для этого примера это ОК, но если мы будем добавлять позиции асинхронно, или номер позиции окажется не числом, то в массиве появятся дыры.
 Как сделать, чтобы эти ситуации тоже предусматривались?
 |  |  
	| 
		
	| 
			
			 
			
				09.06.2014, 18:16
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| 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))
 |  |  
	| 
		
	| 
			
			 
			
				09.06.2014, 18:23
			
			
			
		 |  
	| 
		
			|  | Быдлокодер;)       |  | 
					Регистрация: 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>
 |  |  |  |