Summary: I have the below list which is Array of Array of Objects. I have tired the below code and I need help with the code.
const sub = [ [ { id: 'ckndqfwk3538691qzbzty14yit', name: 'Middle SubCategory' } ],
[ { id: 'cknc642pi436141ptdfzwn3r6d', name: 'New Youth' } ],
[ { id: 'ckndqk1lp558551qzbvgbpyjpf', name: 'College Sub' } ],
[ { id: 'ckndqtbds606201qzbyedngk56', name: 'One New Sub' } ],
[ { id: 'ckndr18n3662731qzbep6m16dq', name: 'Sub Strange' },
{ id: 'ckndr5413665081qzbaxjs4gox', name: 'Sub NEw Strange' } ],
[ { id: 'ckmpdxg2513831p01say3e3wl', name: 'SB New One' } ] ]
how can I convert it into something like the below one. Simply an array of objects. Might be simple but I couldn’t get it to work.
const sub = [
{ id: "ckndqfwk3538691qzbzty14yit", name: "Middle SubCategory" },
{ id: "cknc642pi436141ptdfzwn3r6d", name: "New Youth" },
{ id: "ckndqk1lp558551qzbvgbpyjpf", name: "College Sub" },
{ id: "ckndqtbds606201qzbyedngk56", name: "One New Sub" },
{ id: "ckndr18n3662731qzbep6m16dq", name: "Sub Strange" },
{ id: "ckndr5413665081qzbaxjs4gox", name: "Sub NEw Strange" },
{ id: "ckmpdxg2513831p01say3e3wl", name: "SB New One" },
];
here is my code
const categoriesWithSubCategories = quizQuestionCategories.filter(
(category) => category.subcategories.length > 0
);
const subOnly = categoriesWithSubCategories.map((category) => {
let subCategories = [];
category.subcategories.forEach((subcategory) =>
subCategories.push(subcategory)
);
return subCategories;
});
here is the original list in case you want to reproduce
const quizQuestionCategories = [
{
id: "ckm4gpm7j942811p1l2kcyru73",
parentCategory: null,
name: "Lower Elementary",
default: false,
deleted: false,
subcategories: [],
},
{
id: "ckm4gsy1i952901p1lsmjb73q6",
parentCategory: null,
name: "Middle School",
default: false,
deleted: false,
subcategories: [
{
id: "ckndqfwk3538691qzbzty14yit",
name: "Middle SubCategory",
},
],
},
{
id: "ckm4gwciv982031p1l2oduzear",
parentCategory: null,
name: "Youth",
default: false,
deleted: false,
subcategories: [
{
id: "cknc642pi436141ptdfzwn3r6d",
name: "New Youth",
},
],
},
{
id: "ckm4h5kuf992741p1l6otps3bd",
parentCategory: null,
name: "College",
default: false,
deleted: false,
subcategories: [
{
id: "ckndqk1lp558551qzbvgbpyjpf",
name: "College Sub",
},
],
},
{
id: "ckm4h7uhb1012471p1l37dk4mdp",
parentCategory: null,
name: "One More New",
default: false,
deleted: false,
subcategories: [
{
id: "ckndqtbds606201qzbyedngk56",
name: "One New Sub",
},
],
},
{
id: "ckm4hd4vp1032261p1lpfd420an",
parentCategory: null,
name: "Strange One",
default: false,
deleted: false,
subcategories: [
{
id: "ckndr18n3662731qzbep6m16dq",
name: "Sub Strange",
},
{
id: "ckndr5413665081qzbaxjs4gox",
name: "Sub NEw Strange",
},
],
},
{
id: "ckmdz9lpg56301qx2ypz8blon",
parentCategory: null,
name: "dddddddd",
default: false,
deleted: false,
subcategories: [],
},
{
id: "ckmdya8um3149641pvhe5ihqyve",
parentCategory: null,
name: "WOWOW",
default: true,
deleted: false,
subcategories: [],
},
{
id: "ckmefmz1p81531qx23099v0bt",
parentCategory: {
id: "ckluguhvv2639351ptkir2lhfs7",
name: "High School New",
},
name: "Hard Question",
default: false,
deleted: false,
subcategories: [],
},
{
id: "ckmpdjgpq295311p2x0wt70avc",
parentCategory: null,
name: "Parent Category New One",
default: false,
deleted: false,
subcategories: [
{
id: "ckmpdxg2513831p01say3e3wl",
name: "SB New One",
},
],
},
{
id: "cknc642pi436141ptdfzwn3r6d",
parentCategory: {
id: "ckm4gwciv982031p1l2oduzear",
name: "Youth",
},
name: "New Youth",
default: false,
deleted: false,
subcategories: [],
},
{
id: "ckmpdxg2513831p01say3e3wl",
parentCategory: {
id: "ckmpdjgpq295311p2x0wt70avc",
name: "Parent Category New One",
},
name: "SB New One",
default: false,
deleted: false,
subcategories: [],
},
{
id: "ckndqfwk3538691qzbzty14yit",
parentCategory: {
id: "ckm4gsy1i952901p1lsmjb73q6",
name: "Middle School",
},
name: "Middle SubCategory",
default: false,
deleted: false,
subcategories: [],
},
{
id: "ckndqk1lp558551qzbvgbpyjpf",
parentCategory: {
id: "ckm4h5kuf992741p1l6otps3bd",
name: "College",
},
name: "College Sub",
default: false,
deleted: false,
subcategories: [],
},
{
id: "ckndqtbds606201qzbyedngk56",
parentCategory: {
id: "ckm4h7uhb1012471p1l37dk4mdp",
name: "One More New",
},
name: "One New Sub",
default: false,
deleted: false,
subcategories: [],
},
{
id: "ckndr18n3662731qzbep6m16dq",
parentCategory: {
id: "ckm4hd4vp1032261p1lpfd420an",
name: "Strange One",
},
name: "Sub Strange",
default: false,
deleted: false,
subcategories: [],
},
{
id: "ckndr5413665081qzbaxjs4gox",
parentCategory: {
id: "ckm4hd4vp1032261p1lpfd420an",
name: "Strange One",
},
name: "Sub NEw Strange",
default: false,
deleted: false,
subcategories: [],
},
];
Advertisement
Answer
You can do this in one step using flatMap
quizQuestionCategories.flatMap(q => q.subcategories)
const quizQuestionCategories = [
{
id: "ckm4gpm7j942811p1l2kcyru73",
parentCategory: null,
name: "Lower Elementary",
default: false,
deleted: false,
subcategories: [],
},
{
id: "ckm4gsy1i952901p1lsmjb73q6",
parentCategory: null,
name: "Middle School",
default: false,
deleted: false,
subcategories: [
{
id: "ckndqfwk3538691qzbzty14yit",
name: "Middle SubCategory",
},
],
},
{
id: "ckm4gwciv982031p1l2oduzear",
parentCategory: null,
name: "Youth",
default: false,
deleted: false,
subcategories: [
{
id: "cknc642pi436141ptdfzwn3r6d",
name: "New Youth",
},
],
},
{
id: "ckm4h5kuf992741p1l6otps3bd",
parentCategory: null,
name: "College",
default: false,
deleted: false,
subcategories: [
{
id: "ckndqk1lp558551qzbvgbpyjpf",
name: "College Sub",
},
],
},
{
id: "ckm4h7uhb1012471p1l37dk4mdp",
parentCategory: null,
name: "One More New",
default: false,
deleted: false,
subcategories: [
{
id: "ckndqtbds606201qzbyedngk56",
name: "One New Sub",
},
],
},
{
id: "ckm4hd4vp1032261p1lpfd420an",
parentCategory: null,
name: "Strange One",
default: false,
deleted: false,
subcategories: [
{
id: "ckndr18n3662731qzbep6m16dq",
name: "Sub Strange",
},
{
id: "ckndr5413665081qzbaxjs4gox",
name: "Sub NEw Strange",
},
],
},
{
id: "ckmdz9lpg56301qx2ypz8blon",
parentCategory: null,
name: "dddddddd",
default: false,
deleted: false,
subcategories: [],
},
{
id: "ckmdya8um3149641pvhe5ihqyve",
parentCategory: null,
name: "WOWOW",
default: true,
deleted: false,
subcategories: [],
},
{
id: "ckmefmz1p81531qx23099v0bt",
parentCategory: {
id: "ckluguhvv2639351ptkir2lhfs7",
name: "High School New",
},
name: "Hard Question",
default: false,
deleted: false,
subcategories: [],
},
{
id: "ckmpdjgpq295311p2x0wt70avc",
parentCategory: null,
name: "Parent Category New One",
default: false,
deleted: false,
subcategories: [
{
id: "ckmpdxg2513831p01say3e3wl",
name: "SB New One",
},
],
},
{
id: "cknc642pi436141ptdfzwn3r6d",
parentCategory: {
id: "ckm4gwciv982031p1l2oduzear",
name: "Youth",
},
name: "New Youth",
default: false,
deleted: false,
subcategories: [],
},
{
id: "ckmpdxg2513831p01say3e3wl",
parentCategory: {
id: "ckmpdjgpq295311p2x0wt70avc",
name: "Parent Category New One",
},
name: "SB New One",
default: false,
deleted: false,
subcategories: [],
},
{
id: "ckndqfwk3538691qzbzty14yit",
parentCategory: {
id: "ckm4gsy1i952901p1lsmjb73q6",
name: "Middle School",
},
name: "Middle SubCategory",
default: false,
deleted: false,
subcategories: [],
},
{
id: "ckndqk1lp558551qzbvgbpyjpf",
parentCategory: {
id: "ckm4h5kuf992741p1l6otps3bd",
name: "College",
},
name: "College Sub",
default: false,
deleted: false,
subcategories: [],
},
{
id: "ckndqtbds606201qzbyedngk56",
parentCategory: {
id: "ckm4h7uhb1012471p1l37dk4mdp",
name: "One More New",
},
name: "One New Sub",
default: false,
deleted: false,
subcategories: [],
},
{
id: "ckndr18n3662731qzbep6m16dq",
parentCategory: {
id: "ckm4hd4vp1032261p1lpfd420an",
name: "Strange One",
},
name: "Sub Strange",
default: false,
deleted: false,
subcategories: [],
},
{
id: "ckndr5413665081qzbaxjs4gox",
parentCategory: {
id: "ckm4hd4vp1032261p1lpfd420an",
name: "Strange One",
},
name: "Sub NEw Strange",
default: false,
deleted: false,
subcategories: [],
},
];
console.log(quizQuestionCategories.flatMap(q => q.subcategories));Reduce is also an option if you’re working somewhere where flat and flatMap are not supported:
quizQuestionCategories.reduce((acc, q) => acc.concat(q.subcategories), [])