Эти 3 функции используют один и тот же цикл по отдельности.

Можно ли удалить циклы из каждой функции и поместить их в один большой цикл? Есть ли другой лучший способ?

    function createArrayOfNames(catsArray) {
        var catNames = [];
        for (var i = 0; i

Deep Duggal

Ответов: 2

Ответы (2)

Вы можете использовать Map и forEach, чтобы немного очистить код. Кроме того, будьте внимательны, вы сбрасывали var listElements = []; на каждой итерации.

function createArrayOfNames(catsArray) {
    return catsArray.map(function (c) {
        return c.name
    });
}

function createArrayOfListElements(catNames) {

    var listElements = [];

    catNames.forEach(function(name) {
        var listElement = new listElement();
        listElement.innerHTML = name;
        listElements.append(listElement);
    });

    return listElements;
}

function addCatListToView(listElements) {

    var catElements = getElementById('allCats');

    listElements.forEach(function(element) {
        catElements.append(element);
    };
}

Да, создание итерирующей функции было бы хорошим способом сделать ваш код более читабельным.

function iterateCats(callback) {
    for(i = 0; i

Но, как уже упоминалось @squint, если вы не против того, чтобы ваш catsArray был доступен всем вашим функциям, использование forEach является стандартным и более быстрым способом достижения этой цели.

2022 WebDevInsider