jQuery manual говорит мне grep
:
Находит элементы массива, которые удовлетворяют функции фильтра. На исходный массив это никак не повлияет.
Функция, которую вы передаете в grep
, должна возвращать логическое значение, истинное или ложное, чтобы указать, сохраняем ли мы элемент или нет.
В вашем случае вы, кажется, возвращаете [element.getBoundingClientRect().right]
:
var rightValues = [];
создает новый пустой массив var rightOffsetData = element.getBoundingClientRect().right; rightValues.push(rightOffsetData);
добавляет right
к массиву Math.max(rightValues);
вычисляет (а затем игнорирует) наибольшее число в массиве с 1 элементом return rightValues;
возвращает массив с одной записью, что не является ложью, поэтому запись сохраняется
Предположительно, вам нужно что-то вроде:
- Составьте список из
rightOffsetData
значений - Рассчитайте наибольшее из этих значений
Это может привести к чему-то вроде этого:
var actualContainerWidth = Math.max($.map(operatorsData, function(element) {
return element.getBoundingClientRect().right;
}));
Используется map
функция :
Перевести все элементы в массив или объект в новый массив элементов.
$.map(operatorsData, function(element) { return element.getBoundingClientRect().right; })
преобразует список операторовData в список их ограничивающих-правых * 10 54 * Math.max(...)
принимает форму самого высокого значения из этого списка var actualContainerWidth = Math.max(...)
заставляет actualContainerWidth
принимать это значение