Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.08.2015, 16:41
Аспирант
Отправить личное сообщение для Velidan Посмотреть профиль Найти все сообщения от Velidan
 
Регистрация: 13.02.2015
Сообщений: 32

Сравнить высоты элементов 2 массивов
Доброго дня уважаемые коллеги. Поиск выдал, что подобные запросы (Сравнение 2 массивов) слишком часто используются и ничего не выдал.

Подскажите пожалуйста, как лучше сделать так, чтобы можно было сравнить высоты элементов 2 массивов и назначить тому у которого меньше высота, высоту элемента у которого она больше.

Пытаюсь сделать так:

var tableItems = [].slice.call(this.table.querySelectorAll('td:first-child')),
            cloneItems = [].slice.call(this.cloneTable.querySelectorAll('td:nth-child(3)'));

        function compare(arr, arr2) {
            if (arr.length !== arr2.length) {return false; }
            var on = 0,
                i,
                j;

            for (i = 0; i < arr.length; ++i) {

                for (j = 0; j < arr2.length; ++j ) {

                    if (arr[i].offsetHeight !== arr2[j].offsetHeight) {
                                 arr[i].style.height = Math.max(arr[i].offsetHeight,   
                                                             arr2[j].offsetHeight) + 'px';
                          }

                }

            }

        }

       compare(tableItems, cloneItems);


Только у меня перемножение получается (в 2 массивав по 220 элементов и все сравнивается 48400).

Помогите разобраться, что я неправильно делаю. Заранее спасибо.

П.С. еще мне кажется, что я точно что-то не так делаю, потому что все очень долго думает.

Последний раз редактировалось Velidan, 12.08.2015 в 17:04.
Ответить с цитированием
  #2 (permalink)  
Старый 12.08.2015, 16:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Velidan,
var tableItems = [].slice.call(this.table.querySelectorAll('td:first-child')),
      cloneItems = [].slice.call(this.cloneTable.querySelectorAll('td:nth-child(3)'));

  function compare(arr, arr2) {
      if (arr.length !== arr2.length) {
          return false;
      }
      for (var i = 0; i < arr.length; i++) {
          arr[i].style.height = arr2[i].style.height = Math.max(arr[i].offsetHeight, arr2[i].offsetHeight) + 'px';
      }

  }

  compare(tableItems, cloneItems);
Ответить с цитированием
  #3 (permalink)  
Старый 12.08.2015, 17:02
Аспирант
Отправить личное сообщение для Velidan Посмотреть профиль Найти все сообщения от Velidan
 
Регистрация: 13.02.2015
Сообщений: 32

Рони, Вы в который раз мне просто невероятно помогаете и каждый раз мне есть что почерпнуть у Вас. Безгранично благодарен.

Легко, красиво и изящно. Замечательно просто. Не подумал, даже что так можно. В голову не пришло вообще.

П.С. Я уже дошел до вот таких монстров, пока не увидел Ваш ответ

for (i = 0; i < arr.length; ++i) {

                for (j = 0; j < arr2.length; ++j ) {

                    if (arr[i].offsetHeight < arr2[j].offsetHeight) {
                        arr[i].style.height = arr2[j].offsetHeight + 'px';
                        break;
                    } else {
                        arr2[j].style.height = arr[i].offsetHeight + 'px';
                        break;
                    }


                }

            }


П.С. + поставить система не дает, так как "Вы должны поставить кому-то еще, прежде чем отблагодарить".
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сложение всех элементов двух массивов. sharun Общие вопросы Javascript 27 14.05.2018 15:38
Сравнение элементов массивов nesfiraty Общие вопросы Javascript 20 13.01.2015 19:23
Можно ли сравнить атрибуты у элементов? moonlight2 Общие вопросы Javascript 6 24.12.2011 00:45
Как ограничить количество элементов (списков <li>) массивов Naum Элементы интерфейса 2 04.04.2011 11:56
Сравнить значение высоты! Spamol Элементы интерфейса 16 22.01.2011 11:19