I have an infinity deep array tree:
const folderData = [
{
folderId: '1',
isSettingPermission: false,
children: [
{
folderId: '2.1',
isSettingPermission: false,
children: [
{
folderId: '3.1',
isSettingPermission: false,
children: [],
},
],
},
{
folderId: '2.2',
isSettingPermission: false,
children: [],
},
],
},
];
What I want to do is pass in a folderId and changes the "isSettingPermission" from false to true of the folder and its children.
const changeChildrenPermission = (folder) =>
folder.map(({ folderId, children }) => ({
folderId,
isSettingPermission: true,
children: changeChildrenPermission(children),
}));
export const findFolder = (
folders,
id
) => {
let res = null;
if (folders.folderId === id) {
res = changeChildrenPermission([folders]);
}
for (let i = 0; i < folders.children.length; i++) {
findFolder(folders.children[i], folders.children[i].folderId);
}
return res;
};
This is where I'm stuck at, when I pass in the root folderId, it gives me back the correct tree-array. But when I pass in a folderId further down the tree, result will give me null.
const result = findFolder(folderData, '1');
const result = findFolder(folderData, '2.1'); // this returns null