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
|
А не надо их сравнивать. Это два абсолютно разных языка.
|
|
|
|