id не дублируется умнег, а сохраняется. Оно никому не мешает лежа внутри объекта как лежало, поскольку при доступе к элементу по динамически вычисляемому ключу ты НЕ узнаешь id, ибо объект НЕ знает про своего родителя, а когда все в нем - бери что хочешь. Теперь уже иди экономь байты на убивании id.
|
Это господа наше фсе. Рюзга когда узнает как надо, не радуется "А, так вот оно как, ну классно", а горюет "А за что я кровь проливал" и жалко ему становится своего говнокода. Тайком может быть исправит немного, скрепя сердце и скрипя извилинами покиляет часть, но не все, ибо если кодов мало, то нет морального удовлетворения. Это об анальной фиксации читайте у Фрейда.
|
Цитата:
|
У тебя просто подгорело, когда ты понял, что вся эта каша с переливанием пропертей вообще не нужна. Типа а-чо-такова что дохера лишних кодов, подумаешь там несколько десятков байт уедут, но анальная фиксация дала знать - оставленный id тебе сразу бросился в глаза.
Короче, полюби уже себя, делай для себя как лучше, а лучше - это значит лучше, а не как получилось из-за незнания как делается. Делается вообще просто. На сервере формируешь массив и выдаешь его в json или xml браузеру, тот передает скрипту - втыкай и не надо молотить. Из БД получается индексный массив, ну так на сервере профтыкай в него идешники и все. Например на пехепе. $assoc=array(); $rows = $db->query('select * from `messages` where 1')->fetch_all(MYSQLI_ASSOC); /* или какой у тебя драйвер бд */ foreach($rows as $row) $assoc[$row['id']]=$row; echo json_encode($assoc); exit; В браузере просто сразу рендеришь, скажем var el; for(var id in json) if(el=wrapper.querySelector('#'.id)) edit_post(json[id]); /* а вот тут скажи мне брат, как edit_post() узнает про id, если его нет внутри объекта? Если id нет внутри, тебе придется передавать его как дополнительный аргумент фкнкции, а зачем? Понял зачем id внутри? */ else create_post(json[id]); Потому что "модель" уже сделана на сервере. |
Почему нормализовать и приводить в порядок лучше на сервере. Потому что затраты на запуск треда, пехепе или какой там привод - просто несоизмеримы с тем, что затем делается этими скриптами и модулями. Это все равно что поднять пятиэтажный дом и волноваться о коробке чая оставленного на кухне, типа она создаст лишний вес. Когда ты попал в серверный скрипт - можешь там резвиться до посинения. Ты посмотри как прославленные фрейморки устроены изнутри. Жаба - для рендера. Какие-то там модели и прочая тряхомудия - чисто культура, чистого MVC на жабе не надо вообще.
*Из БД получается индексный массив То есть ассоциативный, но с индексами рядов. Ключи в массивах менять нельзя, поэтому приходится переписывать из одного в другой. Premature optimization вопит про el=wrapper.querySelector(), тогда так for(var id in json) if(id in messages) /* старый массив */ edit_post(json[id]); else create_post(json[id]) messages=json; /* теперь новые данные стали старыми */ Одна процедура на всё. Если messages={}, то сработает только create_post() |
Часовой пояс GMT +3, время: 02:38. |