Задать вопрос
@BKaiyrbekov

Как упростить код javascript[рекурсия]?

я написал немного говно кода, как упростить этот код?
есть обьект
object = {
    article: 10,
    blog: 5,
    officialclarification: 1,
    qa: 1,
    questionanswer: 2,
    ....
}

есть еще какой то массив
array = [
    {
        links: [
            { ... parentType: 'blog' },
            { ... parentType: 'article' },
            { ... parentType: 'officialclarification' },
            { ... parentType: 'questionanswer' },
            { ... parentType: 'opendialog' },
        ]
    },
   ....
]

теперь моя функция
function searchParentType(data, key, value) {
    if (Array.isArray(data)) {
        data.forEach(item => searchParentType(item, key, value))
    } else {
        if (data.parentType === key) data.count = value
    }
}
function changeCount() {
    Object.entries(object).forEach(([key, value]) => {
        array.forEach(item => searchParentType(item.links, key, value))
    })
}

результат
array = [
    {
        links: [
            { ... parentType: 'blog', count: 5 },
            { ... parentType: 'article', count: 10},
            { ... parentType: 'officialclarification', count: 1 },
            { ... parentType: 'questionanswer', count: 2 },
            { ... parentType: 'opendialog'},
        ]
    },
   ....
]


p/s: самый главный минус в моем коде цикл продолжается в моем коде даже если этот условия(data.parentType === key) выполнился...
  • Вопрос задан
  • 61 просмотр
Подписаться 1 Средний Комментировать
Решения вопроса 1
@BKaiyrbekov Автор вопроса
ну упростил так.... и сам доволен )
array.forEach(groupLinks => { 
    groupLinks.links.forEach(itemLink => { 
        if (itemLink.parentType in object) itemLink.count = object[itemLink.parentType]
    })
})
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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