简体   繁体   中英

filter array includes multiple items

i want to filter an array by some specific names

genres = [
{id: 1, name: 'Action'},
{id: 2, name: 'Comedy'},
{id: 3, name: 'Documentary'},
{id: 4, name: 'Action'},
{id: 5, name: 'Comedy'},
]

// in here i get only Action
genres.filter(i => i.name.includes("Action"))
output = [
{id: 1, name: 'Action'},
{id: 4, name: 'Action'},
]

// in here i get only Comedy
genres.filter(i => i.name.includes("Comedy"))
output = [
{id: 2, name: 'Comedy'},
{id: 5, name: 'Comedy'},
]

But i want to get both Action and Comedy like this:

[
{id: 1, name: 'Action'},
{id: 4, name: 'Action'},
{id: 2, name: 'Comedy'},
{id: 5, name: 'Comedy'},
]

How can i do it?

genres.filter(i => i.name.includes("Action") | i.name.includes("Comedy"))

or

genres.filter(i => ["Action","Comedy"].includes(i.name))

Use an OR operator to check on both conditions

 genres = [ {id: 1, name: 'Action'}, {id: 2, name: 'Comedy'}, {id: 3, name: 'Documentary'}, {id: 4, name: 'Action'}, {id: 5, name: 'Comedy'}, ] // Use a OR operator to check both conditions result = genres.filter(i => i.name.includes("Action") || i.name.includes("Comedy")) console.log(result)

You can do:

 const genres = [{id: 1, name: 'Action'},{id: 2, name: 'Comedy'},{id: 3, name: 'Documentary'},{id: 4, name: 'Action'},{id: 5, name: 'Comedy'},] const result = genres.filter(({ name }) => ['Action', 'Comedy'].includes(name)) console.log(result)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM