Сравнить высоты элементов 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, время: 15:09. |