Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Определить максимальную высоту из массива (https://javascript.ru/forum/events/66021-opredelit-maksimalnuyu-vysotu-iz-massiva.html)

kulbabka 21.11.2016 15:06

Определить максимальную высоту из массива
 
С помощью кода ниже я создала массив с высотами блоков. Проблема в том, как мне определить максимальную высоту? Эту максимальную высоту я после буду задавать всем блокам.

function blocksByChildrenTest(){
		var elements = document.getElementById('list-holder').children;
		for(var i = 0; i < elements.length; i++){
			var boxes = elements[i].clientHeight;
			/*for(var j = 0; j < boxes.length; j++){
				elements.style.height = max + 'px';
			}*/
		}
	}
	blocksByChildrenTest();

ksa 21.11.2016 15:09

Цитата:

Сообщение от kulbabka
С помощью кода ниже я создала массив с высотами блоков. Проблема в том, как мне определить максимальную высоту?

Отсортируй массив! ;)

var arr=[2,6,3,9,1,0];
arr=arr.sort();
alert(arr[arr.length-1]);

Dilettante_Pro 21.11.2016 15:10

kulbabka,
https://developer.mozilla.org/ru/doc...jects/Math/max

function getMaxOfArray(numArray) {
  return Math.max.apply(null, numArray);
}
var arr=[2,6,10,3,9,1,0];
alert(getMaxOfArray(arr));

kulbabka 21.11.2016 15:22

Цитата:

Сообщение от ksa (Сообщение 435672)
Отсортируй массив! ;)

var arr=[2,6,3,9,1,0];
arr=arr.sort();
alert(arr[arr.length-1]);

при добавлении arr = boxes.sort(); и запуске в консоле отображается ошибка TypeError: boxes.sort is not a function

Dilettante_Pro 21.11.2016 15:36

ksa
var arr=[2,6,10,3,9,1,0];
arr=arr.sort();
alert(arr[arr.length-1]);


10<9:-?

ksa 21.11.2016 16:37

Цитата:

Сообщение от Dilettante_Pro
10<9

Легким движением руки, брюки превращаются... Превращаются брюки... В элегантные шорты! (с) :D

var arr=[2,6,10,3,9,1,0];
arr=arr.sort(sortFunction);
alert(arr[arr.length-1]);
function sortFunction(a, b){
	return a-b;
};

ksa 21.11.2016 16:38

Цитата:

Сообщение от kulbabka
при добавлении
arr = boxes.sort();
и запуске в консоле отображается ошибка TypeError: boxes.sort is not a function

Потому как твой boxes не массив... :no:

kulbabka 21.11.2016 16:45

Цитата:

Сообщение от ksa (Сообщение 435680)
Потому как твой boxes не массив... :no:

https://s3.amazonaws.com/scrstorage/...k0i23vs737.jpg

kulbabka 21.11.2016 16:48

Мне нужно прописать var boxes = new Array()?

Dilettante_Pro 21.11.2016 16:53

Цитата:

Сообщение от kulbabka (Сообщение 435684)
Мне нужно прописать var boxes = new Array()?

http://javascript.ru/basic/array

kulbabka 21.11.2016 17:20

Я не понимаю, почему мой boxes не массив?

Dilettante_Pro 21.11.2016 17:52

kulbabka,
var boxes = elements[i].clientHeight;

- это простая переменная, значение которой равно высоте одного элемента массива. В результате выполнения цикла - высота последнего элемента.
Перед циклом объявите
var boxes = [];


В цикле
boxes.push(elements[i].clientHeight);

kulbabka 21.11.2016 18:02

Огромное спасибо!

kulbabka 21.11.2016 18:05

:dance: получилось
function blocksByChildrenTest(){
		var elements = document.getElementById('list-holder').children;
		var boxes = [];
		for(var i = 0; i < elements.length; i++){
			boxes.push(elements[i].clientHeight);
		}
		var maxHeight = Math.max.apply(null, boxes);
		for (var j = 0; j < elements.length; j++){
			elements[j].style.height = maxHeight + 'px';	
		}
	}
	
	blocksByChildrenTest();

рони 22.11.2016 02:07

kulbabka,
:-?
function blocksByChildrenTest(){
    var elements = document.getElementById('list-holder').children;
    var maxHeight = 0;
    for(var i = 0; i < elements.length; i++){
      maxHeight = Math.max(elements[i].clientHeight, maxHeight);
    }
    for (i = 0; i < elements.length; i++){
      elements[i].style.height = maxHeight + 'px';
    }
  }


Часовой пояс GMT +3, время: 03:54.