Maxmaxmaximus4,
согласен если количество операций больше длины массива легче каждый элемент заново создать |
Цитата:
|
Цитата:
|
Цитата:
В общем программа на 100% рабочая, только не моя, если в 2х словах я сделал что то типо оболочки для другой программы, что бы не писать с 0 ) |
Цитата:
|
Цитата:
А в общем система образования говно редкое, потому что я так и не понял чему они меня должны были научить) |
Цитата:
|
Maxmaxmaximus4, а что не так с этим вариантом, тут порядок учитывает http://javascript.ru/forum/offtopic/...tml#post285530
|
cyber, ну во первых там реплейс не выдает индексы элементов которые изменились. а именно это он должен делать, вместо этого он выдает какие то обьекты. во вторых я уже свае варганю, как доделаю покажу чо получилось.
|
Цитата:
|
мне не стоит забывать о том что цель у этого не просто получать неебаца идеальное решение а именно учитывать где именно добавился или удалился элемент, ни что не мешает мне потом в цикле пробежаться и значения новые присвоить так как рендерер перерисует только изменившиеся =) так что по сути достаточно слегка отфильтровать список remove и insert от одинаковых значений и в бой) твоя функция идеальная, простая, быстрая и просто ИДЕАЛЬНО как раз для этого подходит. я вообще не знаю с чего ты взял что она медленная у тебя, она гораздо быстрее всех "более правильных" аналогов.
|
Цитата:
|
cyber, на пне четвертом сранивает 1000х массивы за 54 миллисекунд, я не знаю где ты вообще теслил
|
на список 1000 элементов. вначале рисуется вся тысяча, потом pop и unshift делал
думаю вполне неплохо, щас буду сервис $animate пилить =) и вообще по сколку я отказался от ишаков ниже 10, то анимации будут только на css. кому надо будет запилят обычные анимации на яваскрипте. не трудно. 2014 год уже на дворе, хватит! |
Maxmaxmaximus4, согласен, чет я где то напортачил, щас все норм 4к элементов за 400 милесекунд обрабатывает.
Цитата:
|
Цитата:
|
ну нахер он не работает на этом говенном сайте! тут все через жопу
|
Maxmaxmaximus4, твой код не работает)
Цитата:
|
Цитата:
|
Цитата:
мдя, браузер почему то закэшировал скрипт ui старой версии, хотя Cache-Control:max-age=0 ну и что ты там говорил про танцора? |
Maxmaxmaximus4, просто если скрипт не работает в фрейме, значить с ним что то не так?
|
Цитата:
например тут был баг когда пришлось очистить кэш вручную чтобы новая версия ui заработала, хотя время жизни стоит 0. теперь ты понял что был не прав пошутив про танцора? ну а чо) норм так на пеньке то четвертом, а у вас что показывает? 5к элементов <script src='//mychamber.ru/build/ui.js'></script> <ul controller="Chat"> <button click="reverse()">reverse</button> <li repeat="item in items">{item}</li> </ul> <script> function Chat() { items = genArr(5000) reverse = function() { items = items.reverse() } } function genArr(cnt) { var arr = []; for (var i = 0; i < cnt; i++) { arr[i] = Math.round(Math.random()) ? Math.random() : i; } return arr; } </script> |
Maxmaxmaximus4, я тут немного завис, как ты сделал scope для функции так что бы items не был глобальной переменной? О_о
П.с Возможно я уже туплю. |
Цитата:
Пенек пеньком, бывает же такое)) |
Цитата:
|
Maxmaxmaximus4,, епать я затупил, короче можно сделать что бы в пару раз быстрее работало)
нужно добавить проверку function compare(fArr,arr) { var search = arr.slice(), insert = [], remove = [], replace = []; for(var i = 0, index; i < fArr.length; i++) { if(fArr[i] === arr[i]){// вот эта проверка delete search[i]; continue; } index = search.indexOf(fArr[i]); if(!~index) { remove.push(i); continue; } i != index && replace.push({old: i, new: index}); delete search[index]; }; search.forEach(function (elem, i) { if(elem) insert.push(i); }); return { remove: remove, insert: insert, replace: replace } } |
Китайский городовой, ЕПАТЬ Я БЛ** кактус, короче массив на 10к элементов за 200 милесекунд
http://learn.javascript.ru/play/20fUc function compare(fArr,arr) { var search = arr.slice(), insert = [], remove = [], replace = []; for(var i = 0, index; i < fArr.length; i++) { if(fArr[i] === arr[i]){ search[i] = null; // убираем на фиг delete continue; } index = search.indexOf(fArr[i]); if(!~index) { remove.push(i); continue; } i != index && replace.push({old: i, new: index}); search[index] = null; // убираем на фиг delete }; search.forEach(function (elem, i) { if(elem) insert.push(i); }); return { remove: remove, insert: insert, replace: replace } } |
Цитата:
controller='Ctrl as obj' и обращаться уже нужно будет уже как obj.items а не просто items ^____^ а еще есть frp стиль, в котором и рекомендуется писать. (это) синтаксис ячеек, если то что приравнивается в поле контроллера обернуто в ячейки то оно оборачивается в функцию и вешается геттер на это поле, так что значение там будет всегда актуальное. <script src='//mychamber.ru/build/ui.js'></script> <div controller="Ctrl"> <button click="up()">up</button> {a} плюс {b} ровно: {c} </div> <script> function Ctrl() { a = 11 b = 20 c = (a + b) up = function() { a++ } } </script> cyber, почему ты проверяешь ячейку так if(elem) insert.push(i); ?? я что, нули не могу хранить в массиве теперь и пустые строки? |
Цитата:
|
function compare(fArr,arr) { var search = arr.slice(), insert = [], remove = [], replace = []; for(var i = 0, index; i < fArr.length; i++) { if(fArr[i] === arr[i]){ search[i] = undefined; continue; } index = search.indexOf(fArr[i]); if(!~index) { remove.push(i); continue; } i != index && replace.push({old: i, new: index}); search[index] = undefined; }; search.forEach(function (elem, i) { if(elem !== undefined) insert.push(i); }); return { remove: remove, insert: insert, replace: replace } } |
cyber,
ты об этом =)? |
щас проверю на баги наверняка, но вроде все ок)
|
Maxmaxmaximus4,
убирай delete - это невероятно тормознутая хрень) |
Цитата:
|
Цитата:
Цитата:
"" === undefined// false null === undefined// false |
Цитата:
Цитата:
|
Maxmaxmaximus4, меня в какой то момент осенило что я когда то читал что delete лучше не использовать в цикле)
|
Maxmaxmaximus4, только подожди радываться не все сходиться
|
а я инстинктивно думал что он такой весь из себя нативный внутренний мегаскоростной так как просто удаляет ключ обьекта. охренеть! ОХРЕНЕТЬ ТЫ ГЕНИЙ!111 Я СЕРЬЕЗНО!!1 2к элементов на пне четверном инициализируются 160 миллисек а меняются местами 30 миллисек.
|
Цитата:
|
Часовой пояс GMT +3, время: 19:26. |