@boga-net

Как вернуть результат из метода each?

Все доброго времени суток. Как возвращать результат работы функции в методе each или присваивать результат их работы в переменную, как с обычными функциями ?

Например :

<div class="wrapper">
    <div class="box"> </div>
    <div class="box"> </div>
    <div class="box"> </div>
</div>


$('.box').each(function() {
    var thisLength = $('.box').length;
    console.log(thisLength);   // всё ок
});


var zzz = $('.box').each(function() {
    var thisLength = $('.box').length;
    return thisLength;     
});

console.log(zzz); // не ок..
// Возвращает объект с элементами "box"


Как быть-то ? Спасибо.
  • Вопрос задан
  • 210 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Альтернативой .each() является .map(), которая собирает в массив всё, что возвращает переданная функция. Дальше с этим массивом вы уже можете делать что угодно.

Но вообще, вы в коде что-то очень странное делаете. Зачем для каждого элемента коллекции получать ещё раз всю коллекцию и считать её длину? Чего вы пытаетесь добиться?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
lidacriss
@lidacriss
wtf
$('.box').each(function() {
    var thisLength = $('.box').length;
    console.log(thisLength);   // всё ок
});


вероятно вы хотели сделать чтото типа такого:
$('.box').each(function() {
    var thisLength = $(this).text().length; // <- в этом месте
    console.log(thisLength);
});


var zzz = $('.box').each(function() {
    var thisLength = $('.box').length;
    return thisLength;     
});


а в этом случае вам следует использовать .map()
var zzz = $('.box').map(function() {
    return $(this).text().length;     
}).get();


UPD и да, какой именно результат вы хотели получить?
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы