Я пытаюсь выполнить итерацию объекта JSON, который представляет собой массив категорий. Категории могут иметь или не иметь подкатегорию.
Если
hasSubcategory = false
,
тогда идентификатор категории должен быть сохранен в окончательном массиве.
Если hasSubcategory = true
, он должен повторяться, пока подкатегория не станет hasSubcategory = false
и сохранить идентификатор в
окончательный массив.
Существует поле parentId
для представления родительской категории категории.
Более важно, что могут быть подкатегории для одной подкатегории
Конечный массив должен иметь идентификатор категории только с hasSubcategory = false
.
Для следующего примера конечный массив должен быть [2,3,5,6]
[
{
"_id": "1",
"name": "DESKTOP COMPUTERS",
"hasSubCategory": "true",
"parentId": "0"
},
{
"_id": "2",
"name": "LAPTOP COMPUTERS",
"hasSubCategory": "false",
"parentId": "1"
},
{
"_id": "3",
"name": "MONITORS",
"hasSubCategory": "false",
"parentId": "2"
},
{
"_id": "4",
"name": "INPUT DEVICES",
"hasSubCategory": "true",
"parentId": "0"
},
{
"_id": "5",
"name": "PRINTERS SCANNERS",
"hasSubCategory": "true",
"parentId": "4"
},
{
"_id": "6",
"name": "ACCESSORIES",
"hasSubCategory": "false",
"parentId": "4"
},
{
"_id": "7",
"name": "ACCESSORIES",
"hasSubCategory": "false",
"parentId": "5"
},
{
"_id": "8",
"name": "ACCESSORIES",
"hasSubCategory": "false",
"parentId": "5"
},
]
То, что я пробовал, но я не смог продолжить
async function recursiveFunction(subCategory)
{
if(subCategory.length == 0)
{
return 1;
}
for(i=0;i<subCategory.length;i++)
{
if(subCategory[i].hasSubCategory === 'true' )
{
// subCategory = subCategory[i];
subCategory[i] = await mongodb.findAll({parentId:new objectid (category._id)});
recursiveFunction(subCategory[i])
}
else
{
finalCategories.push(subCategory[i])
}
}
}
category = await mongodb.findOne({_id:new objectid (request.params.id)});
if(category.hasSubCategory === 'true')
{
subCategory = await mongodb.findAll({parentId:new objectid (category._id)});
// await recursiveFunction(subCategory)
}
else
{
console.log(category)
}
console.log(finalCategories)