alex-lenk
@alex-lenk
Разработчик сайтов

Как вытащить данные из массива отвечающий определенному критерию?

Есть такой блок:

<div class="lang-area">
    <ul class="lang list-unstyled">
        <li class="lang-item lang-item__active"><a href="#" class="rus">Россия</a></li>
        <li class="lang-item"><a href="#" class="en">Britain</a></li>
        <li class="lang-item"><a href="#" class="deu">Deutschland</a></li>
        <li class="lang-item"><a href="#" class="fr">France</a></li>
        <li class="lang-item"><a href="#" class="es">España</a></li>
    </ul>
</div>


Пытаюсь вытащить ширину самого длинного элемента с классом lang-item и присвоить родителю lang-area:

var langItemWidth = $('.lang-item').width();
$(".lang-area").width(langItemWidth);


Понятное дело, что берется первый результат с классом lang-item, пытаюсь массивом пробовать:

$(function() {
  $(".lang-item").each(function(index, element) {
    console.log(
      "Индекс элемента lang-item: " + index + "; ширина элемента = " + $(element).width()
    );
  });
});


Однако, я не понимаю, как из этого цикла вытащить результат с самой длинной шириной, подскажите пожалуйста.

Вот ссылка на инструмент где я пытаюсь провести манипуляции https://codepen.io/alex-lenk/pen/YvgozV
  • Вопрос задан
  • 79 просмотров
Решения вопроса 2
https://developer.mozilla.org/ru/docs/Web/JavaScri...
$(function() {
  let length = Array.reduce($('.lang-item a'), (result, item) => {
    return Math.max(result, $(item).width())
  }, 0);
  console.log(length);
});
Ответ написан
BRAGA96
@BRAGA96
Как вариант
var $item = $('a', $('.lang-item'));
var maxWidth = Math.max.apply(null, $.makeArray($item).map(function(item) {
	return item.offsetWidth;
}));
console.log(maxWidth);


Или так:
const $item = $('a', $('.lang-item'));
const maxWidth = Math.max(...Array.from($item).map((item) => item.offsetWidth));
console.log(maxWidth);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
danial72
@danial72
flutter dart.
Var mxw =0;

Внутри цикла:
If ($(element).width() >mxw){mxw = $(element).width() }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы