Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #101 (permalink)  
Старый 09.12.2013, 23:04
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Maxmaxmaximus4, просто если скрипт не работает в фрейме, значить с ним что то не так?
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #102 (permalink)  
Старый 09.12.2013, 23:09
Кандидат Javascript-наук
Посмотреть профиль Найти все сообщения от Maxmaxmaximus4
 
Регистрация: 08.12.2013
Сообщений: 142

Сообщение от cyber
просто если скрипт не работает в фрейме, значить с ним что то не так?
на чем основано утверждение что скрипт не работает во фрейме из-за того что он во фрейме а не по другим причинам?
например тут был баг когда пришлось очистить кэш вручную чтобы новая версия ui заработала, хотя время жизни стоит 0. теперь ты понял что был не прав пошутив про танцора?

ну а чо) норм так на пеньке то четвертом, а у вас что показывает? элементов

<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, 09.12.2013 в 23:14.
Ответить с цитированием
  #103 (permalink)  
Старый 09.12.2013, 23:25
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Maxmaxmaximus4, я тут немного завис, как ты сделал scope для функции так что бы items не был глобальной переменной? О_о
П.с Возможно я уже туплю.
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #104 (permalink)  
Старый 09.12.2013, 23:31
Профессор
Отправить личное сообщение для l-liava-l Посмотреть профиль Найти все сообщения от l-liava-l
 
Регистрация: 14.03.2012
Сообщений: 1,808

Цитата:
repeat: 4417.068ms
Intel® Core™ i3-3217U CPU @ 1.80GHz × 4

Пенек пеньком, бывает же такое))
__________________
Научу себя плохому
Ответить с цитированием
  #105 (permalink)  
Старый 10.12.2013, 00:00
Кандидат Javascript-наук
Посмотреть профиль Найти все сообщения от Maxmaxmaximus4
 
Регистрация: 08.12.2013
Сообщений: 142

Сообщение от l-liava-l
Пенек пеньком, бывает же такое))
консоль то закрой когда тестишь)) ты не знал что она тормозит работу скрипта)??? консоль закрой потыкай а потом открывай смотри.

Последний раз редактировалось Maxmaxmaximus4, 10.12.2013 в 00:06.
Ответить с цитированием
  #106 (permalink)  
Старый 10.12.2013, 00:01
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

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
    }
    
}
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #107 (permalink)  
Старый 10.12.2013, 00:05
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Китайский городовой, ЕПАТЬ Я БЛ** кактус, короче массив на 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
    }
    
}
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #108 (permalink)  
Старый 10.12.2013, 00:07
Кандидат Javascript-наук
Посмотреть профиль Найти все сообщения от Maxmaxmaximus4
 
Регистрация: 08.12.2013
Сообщений: 142

Сообщение от cyber
я тут немного завис, как ты сделал scope для функции так что бы items не был глобальной переменной? О_о
немного уличной магии ^_^ это не глобальная переменная это синтаксис такой, это поле контроллера, можем развернуть такие поля в текущий скоуп а можем развернуть в инстанс
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); ??

я что, нули не могу хранить в массиве теперь и пустые строки?

Последний раз редактировалось Maxmaxmaximus4, 10.12.2013 в 00:09.
Ответить с цитированием
  #109 (permalink)  
Старый 10.12.2013, 00:12
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от Maxmaxmaximus4
я что, нули не могу хранить в массиве теперь и пустые строки?
Не будь ты индусом, замени null на undefined, эт я от радости не подумал
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #110 (permalink)  
Старый 10.12.2013, 00:13
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

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
    }
    
}
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как можно найти разрешение рабочей области браузера? Влад Общие вопросы Javascript 3 20.07.2009 10:18
Как найти конец плоского файла Don_001 Общие вопросы Javascript 1 07.07.2009 12:47
Как можно изменить расстояние между панелями overlay и filmstrip в фотогалереи? Honey jQuery 0 29.06.2009 10:16
как найти нужный объект? `p r o x y jQuery 2 05.05.2009 01:12
Как найти путь к файлу для модификации? JuliaMilan Firefox/Mozilla 0 31.03.2009 14:06