| 
	| 
	
	| 
		
	| 
			
			 
			
				16.07.2008, 16:40
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 16.07.2008 
						Сообщений: 8
					 
		
 |  |  
	| 
				ассоциативный массив где ключ это год или .....
			 Люди подскажите как выйти из положенияесть массив в котором есть поля
 id data desc .....
 (поле data - dd-mm-yyyy)
 
 надо получить второй массив в котором перечисленны все года попавшиеся в массиве 1
 и к каждому из этих годов перечисленны id записей с этим годом из массива 1
 например
 2008=0,12,16,95,148
 2007=5,7,9,15
 .........
 
 или может как по другому решить задачку
 			 Последний раз редактировалось Sandr, 16.07.2008 в 16:43.
 |  |  
	| 
		
	| 
			
			 
			
				16.07.2008, 20:44
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 25.02.2008 
						Сообщений: 707
					 
		
 |  |  
	| Sandr, проходите циклом по массиву, создавая новый объект, ключами которого будут годы, а значениями - id-шники (можно приплюсовывать через запятую, как в вашем примере, а можно значением ключа сделать так же массив и добавлять id'шники в массив); 			 Последний раз редактировалось Dmitry A. Soshnikov, 16.07.2008 в 21:23.
 |  |  
	| 
		
	| 
			
			 
			
				17.07.2008, 09:39
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 16.07.2008 
						Сообщений: 8
					 
		
 |  |  
	| Спасибо 
Вот создал объект и ..... 
а как правильней перечислить id для каждого года?
 
я пошел кривой дорогой - создал для каждого года ключи с id
 
var yearProj = new Object;
for (i=0; i < rootArray.length; i++){
	var year = rootArray[i][1].substr(0,4)
	if (!yearProj[year])
		yearProj[year] = new Object;
	yearProj[year][i] = true;
}
			 Последний раз редактировалось Sandr, 17.07.2008 в 11:22.
 |  |  
	| 
		
	| 
			
			 
			
				17.07.2008, 13:34
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 25.02.2008 
						Сообщений: 707
					 
		
 |  |  
	| 
	
 
	| Сообщение от Sandr |  
	| а как правильней перечислить id для каждого года? |  
	
 Как удобнее.  Можно строкой через запятую, можно объектом (только id, как я понимаю, не равен i, т.е.
 
yearProj[year][rootArray[i][0]] = true;
 
а не yearProj[year][i] = true; ). Если через запятую, то просто приплюсовывайте -
 
yearProj[year] += rootArray[i][0] + ',';
 
(в конце последнюю запятую нужно удалить будет);
 
Полученную строку, потом легко преобразовать в массив - методом split(','), например.			 Последний раз редактировалось Dmitry A. Soshnikov, 17.07.2008 в 13:36.
 |  |  
	| 
		
	| 
			
			 
			
				17.07.2008, 14:25
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 16.07.2008 
						Сообщений: 8
					 
		
 |  |  
	| Снова спасибо 
я пришел из PHP поэтому и мыслю по PHP...
 
	
 
	| Сообщение от Dmitry A. Soshnikov |  
	| только id, как я понимаю, не равен i |  
	
 как мне из rootArray получить строчку с нужным id? 
в случае с  
yearProj[year][i] = true;
 
я просто обращаюсь к rootArray[yearProj[year][1]] |  |  
	| 
		
	| 
			
			 
			
				17.07.2008, 14:32
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 16.07.2008 
						Сообщений: 8
					 
		
 |  |  
	| и еще один вопрос 
все тотже массив в котором есть поля 
id data name desc .. 
нужно собрать массив с подмассивами где name начинается с буквы в промежутках [а-ж] [з-н] [о-у] [ф-я] 
пример: 
новыймассив([а-ж]= 1,8,9,12,65;[з-н]=19,22,29,64......)
 
этот скрипт мне соберет только перечиления букв- и соответсвующих им i
 
var letter = rootArray[i][2].substr(0,1).toLowerCase()
if (!letterPoj[letter])
	letterPoj[letter] = new Object;
letterProj[letter][i] = true;
			 Последний раз редактировалось Sandr, 17.07.2008 в 14:39.
 |  |  
	| 
		
	| 
			
			 
			
				17.07.2008, 17:56
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 25.02.2008 
						Сообщений: 707
					 
		
 |  |  
	| По поводу годов (один из вариантов - собирать id-шники по году в массив): 
var rootArray = [
  [1, '2008-07-17'],
  [2, '2008-07-17'],
  [3, '2007-07-17']
];
var yearProj = {};
var year;
for (var k = 0; k < rootArray.length; k++) {
  year = rootArray[k][1].substr(0, 4);
  // алтернативная запись - if (..) {...}
  !yearProj[year] && (yearProj[year] = []);
  // собираем в массив
  yearProj[year].push(rootArray[k][0]);
}
// проверка
for (var k in yearProj) {
  alert(yearProj[k]);
  // чтобы получить строку из массива,
  // можно применить join(',')
  alert('Строка: ' + yearProj[k].join(','))
}
По поводу букв можно проверить регулярными выражениями  (только проверять коды букв, т.к. у вас русские буквы используются).			 Последний раз редактировалось Dmitry A. Soshnikov, 17.07.2008 в 18:05.
 |  |  
	| 
		
	| 
			
			 
			
				18.07.2008, 14:54
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 16.07.2008 
						Сообщений: 8
					 
		
 |  |  
	| Особенное спасибо за комментариик коду
 Вот бы кто подсказал хорошую статейку по сравненению программинга в php и в js
 |  |  
	| 
		
	| 
			
			 
			
				18.07.2008, 15:39
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 19.02.2008 
						Сообщений: 9,177
					 
		
 |  |  
	| 
	
 
	| Сообщение от Sandr |  
	| по сравненению программинга в php и в js |  
	
 А не надо их сравнивать. Это два абсолютно разных языка. |  |  |  |