Как сгруппировать все подкатегории дубликатов в одну категорию в новом массиве

#javascript

#javascript

Вопрос:

Например, у меня есть массив, в котором есть дубликаты категорий

array = { Категория: «Монетизация на основе рекламы», подкатегория: «Контент и информационные услуги»}, { Категория: «Балансовые предприятия», подкатегория: «тест1»}, { Категория: «Балансовые предприятия», подкатегория: «тест2»}

Я хочу иметь возможность помещать значения этого массива в новый массив, но в следующем формате:

array2 = {Категория: «Балансовые предприятия», подкатегория: [{ имя: «test1»},{имя: «test2»}]}, { Категория: «Монетизация на основе рекламы», подкатегория: [{ имя: «Контент и информационные услуги»}]

Ответ №1:

Я думаю, что следующего должно быть достаточно для достижения того, чего вы хотите.

Как всегда, есть много оптимизированных способов сделать то же самое, но этого должно быть достаточно, чтобы вы начали, и вы можете подумать об оптимизации самостоятельно.

 var array = [{ Category: "Ad-Based Monetization", SubCategory: "Content amp; Information Services"}, { Category: "Balance sheet businesses", SubCategory: "test1"}, { Category: "Balance sheet businesses", SubCategory: "test2"}]

var obj = {}

// Create a simple lookup with Category as key and SubCategories as value
array.forEach(arr => {
    if(obj.hasOwnProperty(arr.Category)){
        obj[arr.Category].push(arr.SubCategory);
    } else {
        obj[arr.Category] = [arr.SubCategory];
    }
});

const final = []

// Loop over the obj created and format it into the desired structure
for (let Category in obj){
    const SubCategory = obj[Category].map(name => ({name}));
    final.push({Category, SubCategory})
}

console.log(final);