const tree = [
{
id: 1,
name: "node1",
value: 10,
children: [
{ id: 2, name: "node2", value: 20 },
{ id: 3, name: "node3", value: 30 },
],
},
];
function filterTree(tree, keys) {
return tree.map(({ children, ...rest }) => ({
...keys.reduce((acc, key) => ({ ...acc, [key]: rest[key] }), {}),
...(children && { children: filterTree(children, keys) }),
}));
}
const newTree = filterTree(tree, ["id", "name"]);
console.log(newTree); // [{ id: 1, name: "node1", children: [{ id: 2, name: "node2" }, { id: 3, name: "node3" }] }]