Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- export const findNewNode = (oldTreeData, newTreeData) => {
- let res;
- for (let i = 0; i < oldTreeData.length; i++) {
- const oldNode = oldTreeData[i];
- const newNode = newTreeData[i];
- if (oldNode.children && newNode.children && oldNode.children.length === newNode.children.length) res = findNewNode(oldNode.children, newNode.children)
- else if (!oldNode.children && newNode.children) res = newNode.children[0];
- else if (oldNode.children && newNode.children && oldNode.children.length !== newNode.children.length) res = newNode.children[newNode.children.length - 1]
- //console.log(res)
- return res
- }
- }
- export const deleteNode = (tree, title) => {
- return tree.reduce((newTree, node) => {
- if (node.title === title) {
- return newTree;
- }
- else if (node.title !== title && node.children && node.children.length) {
- return newTree.concat({
- ...node,
- children: deleteNode(node.children, title)
- })
- }
- else return newTree.concat(node)
- }, [])
- }
- export const addNode = (tree, parentTitle, newNode) => {
- return tree.reduce((newTree, node) => {
- if (node.title === parentTitle) {
- if (node.children) node.children.push(newNode)
- else node.children = [newNode]
- return newTree.concat(node)
- }
- else if (node.children) {
- return newTree.concat({
- ...node,
- children: addNode(node.children, parentTitle, newNode)
- })
- } else return newTree.concat(node)
- }, [])
- }
- export const getParent = (tree, node) => {
- const {id} = node;
- for (let i = 0; i < tree.length; i++) {
- if (tree[i].children && tree[i].children.find(child => child.id === id)) return tree[i];
- else if (tree[i].children) return getParent(tree[i].children, node)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement