I've got a list:
const list = [{
name: 'Simon',
age: 18
}, {
name: 'Simon',
age: 22
}, {
name: 'Martha',
age: 18
}]
and my filter params are:
const filterParams = {
name: 'Simon',
age: 18
}
I want to apply my filter params to filter my list, but I can pass one or 2 params.
{
name: 'Simon'
}
OR
{
name: 'Simon',
age: 18
}
My ideia is to iterate through my filterParams and filter those entries in the list.
const filteredList = Object.entries(filterParams).map(([key, value]) => list.filter(l => l[key] === value))
USE CASES
- If I pass
{
name: 'Simon',
age: 18
}
the expected result is:
const expectedResult = [{
name: 'Simon',
age: 18
}]
- If I pass
{
name: 'Simon',
}
the expected result is:
const expectedResult = [{
name: 'Simon',
age: 18
}, {
name: 'Simon',
age: 22
}]
Somehow I couldn't figure out yet and obviously my filter function is not working. Here's a code snippet.
const filterParams = {
name: 'Simon',
age: 18
}
const list = [{
name: 'Simon',
age: 18
}, {
name: 'Simon',
age: 22
}, {
name: 'Martha',
age: 18
}]
const filteredList = Object.entries(filterParams).map(([key, value]) => list.filter(l => l[key] === value))
const expectedResult = [{
name: 'Simon',
age: 18
}]
console.log('filteredList', filteredList)
Thanks in advance
const filteredList = list.filter(l => Object.keys(filterParams).every(key => l[key] === filterParams[key])).