2017-09-25 6 views
0

J'essaie d'utiliser JsonPath pour filtrer un tableau d'objets par id. Pour chaque élément du tableau, je veux le filtrer si son identifiant est dans un second tableau.Comment rechercher un tableau d'objets par ID lorsque cet identifiant se trouve dans un autre tableau (JsonPath)?

Ainsi, par exemple, j'ai le tableau source:

[ 
    { 
    id: 1, 
    name: "House" 
    }, 

    { 
    id: 2, 
    name: "Hamer" 
    }, 
    { 
    id: 13, 
    name: "Book" 
    }, 
    { 
    id: 45, 
    name: "Truck" 
    }, 
] 

Et je veux filtrer ce tableau par id, si cet identifiant est dans un autre tableau, par exemple:

[ 2, 13] 

Cela devrait résultat dans un tableau filtré de:

[ 
    { 
     id: 2, 
     name: "Hamer" 
    }, 
    { 
     id: 13, 
     name: "Book" 
    } 
] 

Je peux comprendre comment faire cela avec une longue or déclaration avec chaque élément dans le deuxième tableau, mais cela semble être une façon assez douloureuse et stupide de filtrer un tableau par un autre.

Comment est-ce que je peux effectuer l'opération ci-dessus en utilisant JsonPath, mais sans or pour chaque élément de tableau dans le deuxième tableau?

Répondre

1
getItemsById = (arr, arr2) => { 
    result = arr.filter(f => arr2.includes(f.id)); 
    console.log(result); 
}