Сравнить высоты элементов 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,
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); |
Рони, Вы в который раз мне просто невероятно помогаете и каждый раз мне есть что почерпнуть у Вас. Безгранично благодарен.
Легко, красиво и изящно. Замечательно просто. Не подумал, даже что так можно. В голову не пришло вообще. П.С. Я уже дошел до вот таких монстров, пока не увидел Ваш ответ 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; } } } П.С. + поставить система не дает, так как "Вы должны поставить кому-то еще, прежде чем отблагодарить". |
Часовой пояс GMT +3, время: 18:04. |