I’ve been trying to remove an item from my array for a while now but the filter removes too much.
My array:
[
{
"domain": "domain1.com",
"slug": "monitor"
},
{
"domain": "domain1.com",
"slug": "monitor-1"
},
{
"domain": "domain2.com",
"slug": "monitor"
}
]
I release the following filter
array.filter((item) => item.slug !== 'monitor')
This removed all my results exclude slug monitor-1, which is correct since I am asking the slug with monitor to remove.
Result:
[
{
"domain": "domain1.com",
"slug": "monitor-1"
},
]
But i only want to remove the slug monitor from domain1.com and not domain2.com
array.filter((item) => item.slug !== 'monitor' && item.domain !== 'domain1.com)
This will remove all the result so the array is empty
[]
How can I make it so that I get it like this, without deleting everything?
So only delete the domain: domain1.com with the slug: monitor.
[
{
"domain": "domain1.com",
"slug": "monitor-1"
},
{
"domain": "domain2.com",
"slug": "monitor"
}
]
2
Answers
You are almost correct,just need to change the expression in
Array.filter()
,below is a reference for youThe item will be kept if the callback returns true and you want to keep it either when the
item.slug !== 'monitor'
OR whenitem.domain !== 'domain1.com'