Arrays are not fixed, so I think we need to use recursion. Here's the array and my solution :Not implemented yet. Remove all data where ‘tag’ = 'user'
An array of
var arr = [
{
"name": "ORG_1",
"tag": "org",
"children": [
{
"name": "ORG_1-1",
"tag": "org",
"children": [
{ "name": "USER_1-1-1", "tag": "user" },
{ "name": "USER_1-1-2", "tag": "user" }
]
},
{ "name": "ORG_1-2", "tag": "org", "children": [] },
{ "name": "USER_1-3", "tag": "user" },
{ "name": "USER_1-4", "tag": "user" }
]
},
{
"name": "ORG_2",
"tag": "org",
"children": [
{
"name": "ORG_2-1",
"tag": "org",
"children": [
{ "name": "USER_2-1-1", "tag": "user" },
{ "name": "USER_2-1-2", "tag": "user" }
]
},
{ "name": "ORG_2-2", "tag": "org", "children": [] },
{ "name": "USER_2-3", "tag": "user" },
{ "name": "USER_2-4", "tag": "user" }
]
}
]
I want to delete the object in the array whose 'type' is 'user'. Here is my code
Code 1
const fun1 = treeList => {
treeList.forEach((item, index) => {
item.tag == 'user' && (treeList.splice(index, 1))
item.children.length && fun1(item.children)
})
}
fun1(arr)
Code 2
const fun2 = treeList => {
treeList = treeList.filter(({ tag }) => tag === 'org')
treeList.forEach((item) => {
item.children.length && fun2(item.children)
})
}
fun2(arr)
This is what I expected, Remove all data where ‘tag’ = 'user'
[
{
"name": "ORG_1",
"tag": "org",
"children": [
{
"name": "ORG_1-1",
"tag": "org",
"children": []
},
{ "name": "ORG_1-2", "tag": "org", "children": [] }
]
},
{
"name": "ORG_2",
"tag": "org",
"children": [
{
"name": "ORG_2-1",
"tag": "org",
"children": []
},
{ "name": "ORG_2-2", "tag": "org", "children": [] }
]
}
]