If I have an array of objects like so:
const array = [
{name: "Jim", attributes: "strong, handsome, tall", age: 28},
{name: "Alice", attributes: "blonde, thin, tall", age: 26},
{name: "Bob", attributes: "lazy, small, thin", age: 32}
]
Is there a way to use _.filter(array) to create a new array with objects whereby a property contains a value.
Something like _.filter(array, attributes.contains("tall")) would return desired result of:
[
{name: "Jim", attributes: "strong, handsome, tall", age: 28},
{name: "Alice", attributes: "blonde, thin, tall", age: 26}
]
CodePudding user response:
This can be done with the built-in filter and checking if the attributes of the person includes "tall".
const array = [
{name: "Jim", attributes: "strong, handsome, tall", age: 28},
{name: "Alice", attributes: "blonde, thin, tall", age: 26},
{name: "Bob", attributes: "lazy, small, thin", age: 32}
];
const tallPeople = array.filter(
(person) => person.attributes.includes("tall")
);
console.log(tallPeople);
CodePudding user response:
You can do this vanilla JS.
try the filter method, but please note it is a shallow copy - so if you update the original array, your filter will be different also.
array.filter(el => el.attributes.includes('tall'))
This is possible because the String type has the includes method.
Updated to use includes instead of contains. both work.
