【发布时间】:2021-10-20 17:39:40
【问题描述】:
我有一个无限深的数组树:
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: [],
},
],
},
];
我想要做的是传入一个 folderId 并将文件夹及其子文件夹的“isSettingPermission”从 false 更改为 true。
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;
};
这是我遇到的问题,当我传入根文件夹 ID 时,它会返回正确的树数组。但是当我在树的下方传递一个 folderId 时,结果会给我 null。
const result = findFolder(folderData, '1');
const result = findFolder(folderData, '2.1'); // this returns null
【问题讨论】:
-
这能回答你的问题吗? How to do recursive tree array function?
-
嗨,确实如此,但是使用了不同的递归
-
我被困在试图通过设置状态来改进原件。
标签: javascript reactjs recursion tree