24.10.2012, 17:17
|
Профессор
|
|
Регистрация: 02.07.2010
Сообщений: 642
|
|
Сообщение от trikadin
|
строки, в отличие от объектов - примитивные типы, и вот они как раз-таки копируются заново.
|
Хорошо, напишу, где я допустил неточность. В фразе " Но вместо 'mama' и 'papa' в данных свойствах могут храниться другие многомегабайтные объекты." имелось ввиду не JS-объекты, а "информационные объекты", коими могут быть и js-строки. Я НЕ знаю заранее, что там может быть. А если там будут строки длиной 2 гигабайта? Они будут копироваться заново?
-Думаю, что да. А Вы?
P.S. можно, конечно, перед присвоением свойств объекту все примитивные типы еще погружать в объекты-оболочки, чтобы такие объекты копировались уже по ссылке... но не масло ли масляное?
|
|
24.10.2012, 17:23
|
Профессор
|
|
Регистрация: 02.07.2010
Сообщений: 642
|
|
Сообщение от Dim@
|
мдаа залёт конечно такой бред нести, ну ладно:
|
Что за дурацкая привычка сразу свистеть? бред... залет... Вы на первом году службы в армии, или в цирке? Зачем цепляться к одному слову? По существу топика можете что-то сказать?
Я написал о двух проблемах в топике. Первую обсудили (будем так считать ). А что делать со второй?
У меня есть своё решение с помощью создания второй копии массива m2={}, но оно мне не нравится по потреблению ресурсов (в какое-то время будет существовать две копии боольших массивов), поэтому хотелось бы услышать мнение профессионалов по более изящному варианту решения.
|
|
24.10.2012, 17:58
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Сообщение от Маэстро
|
можно, конечно, перед присвоением свойств объекту все примитивные типы еще погружать в объекты-оболочки, чтобы такие объекты копировались уже по ссылке...
|
Если у вас будут храниться многомегабайтные строки (например, картинки) - то это вполне хороший выход.
|
|
24.10.2012, 18:02
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от Маэстро
|
-Думаю, что да. А Вы?
|
что мешает перевести примитив в объектное представление?
|
|
24.10.2012, 18:10
|
Профессор
|
|
Регистрация: 02.07.2010
Сообщений: 642
|
|
Сообщение от melky
|
что мешает перевести примитив в объектное представление?
|
Категорически ничего не мешает. Просто чтобы перевезти доски мы используем грузовик (грузим их в кузов), а чтобы перевезти грузовик, мы используем... опять грузовик! (грузим грузовик в грузовик).
Ну да черт с ним. А по вопросу сортировки свойств в объекте можете что-то подсказать?
Хотя, идеально было бы делать то, что я назвал "переименованием" свойств объекта. Знаю, что все имена (названия свойств) - это хэш-массив. Как туда добраться? Есть способ?
|
|
24.10.2012, 18:23
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от Маэстро
|
чтобы перевезти доски мы используем грузовик (грузим их в кузов), а чтобы перевезти грузовик, мы используем... опять грузовик! (грузим грузовик в грузовик).
|
ошибаетесь - мы не грузим их в кузов, а делаем точно такие же доски, загружаем их в кузов, а старые выкидываем.
может, всё-таки поясните, зачем нужен сей велосипед и супер сила?
|
|
24.10.2012, 18:40
|
Профессор
|
|
Регистрация: 02.07.2010
Сообщений: 642
|
|
Сообщение от melky
|
ошибаетесь - мы не грузим их в кузов, а делаем точно такие же доски, загружаем их в кузов, а старые выкидываем.
|
Ну почему же я ошибаюсь? Масло масляное-то ведь не в досках, а в грузовиках, то есть в объектах, которые тоже придется заключать в объекты, т.к. заранее не известно что везём. Следуя Вашей аналогии получается так:
мы не грузим их (грузовики) в кузов, а делаем точно такие же грузовики, загружаем их в кузов, а старые (грузовики) выкидываем.
-во как
Цитата:
|
может, всё-таки поясните, зачем нужен сей велосипед и супер сила?
|
Ну что тут пояснять, я же вроде написал в начале:
есть js-объект m, содержащий другие js-объекты (с черти-каким содержимым - там некие структуры и шифрованные данные). Назовем их "контейнеры".
Все свойства объекта m нумеруются (обзываются) натуральными числами от 0 до nn=10000. Этим свойствам присвоены контейнеры.
Требуется удалить любое свойство n при этом все остальные свойства от n+1 до nn должны сдвинуться в сторону меньших номеров.
n+1 должно стать на место n, n+2 должно стать на место n+1 и т.д.
|
|
24.10.2012, 20:55
|
|
Профессор
|
|
Регистрация: 21.04.2012
Сообщений: 951
|
|
Маэстро,
юзайте массивы и будет вам счастье
|
|
24.10.2012, 21:10
|
Профессор
|
|
Регистрация: 02.07.2010
Сообщений: 642
|
|
Сообщение от Dim@
|
Маэстро,
юзайте массивы и будет вам счастье
|
Ваш совет равносилен например такому: напишите программу на Delphi и будет вам счастье!
Я же говорил, что у меня не массив, а объект. И заменить его на массив я не могу. Только не спрашивайте почему - не уводите дискуссию в сторону. А то, что сортировка в разных браузерах хеша ключей разная - это тоже МОЯ проблема? Кстати, сортировку по возрастанию в Хроме даже осуждают! http://habrahabr.ru/qa/3749/
Вот только интересно, кто победит? Те, кто осуждают, или компания Гугл?
|
|
24.10.2012, 21:47
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Заимстоввание методов не пробовали?
var myObj = {
"0": "0",
"1": "1",
"2": "2",
"3": "3",
"length": 4
};
alert( myObj["2"] ); // 2
Array.prototype.splice.call(myObj, 2, 1);
alert( myObj["2"] ); // 3
Если и это не подходит, значит, придётся реализовывать своюь структуру данных, где выборка по ключу будет O(1), и в которой так же можно будет менять ключ.
мне кажется, что это будет трудно, посему желаю вам удачи.
вообще, такая структура данных у правил в CSS таблицах :
Удаление элемента в "жидком" листе.
я с этим сталкивался уже.
в принципе, можно глянуть в исходниках на Java, как они сделали эти списки, и так же сделать на JS - это как вариант.
Последний раз редактировалось melky, 24.10.2012 в 21:55.
|
|
|
|