web-dev-qa-db-fra.com

Filtrage d'un tableau d'objets avec lodash en fonction de la valeur de la propriété

Nous avons un tableau d'objets en tant que tels

var myArr = [ {name: "john", age:23}
              {name: "john", age:43}
              {name: "jim", age:101}
              {name: "bob", age:67} ];

comment puis-je obtenir la liste des objets de myArr où name est john avec lodash?

38
sarsnake

Lodash a une fonction "map" qui fonctionne comme jQuerys:

var myArr =  [{ name: "john", age:23 },
              { name: "john", age:43 },
              { name: "jimi", age:10 },
              { name: "bobi", age:67 }];

var johns = _.map(myArr, function(o) {
    if (o.name == "john") return o;
});

// Remove undefines from the array
johns = _.without(johns, undefined)

15
Dustin Poissant

Utilisez la méthode lodash _.filter:

_.filter(collection, [predicate=_.identity])

Itère sur les éléments de la collection, renvoyant un tableau de tous les éléments prédicats retournant la vérité. Le prédicat est appelé avec trois arguments: (Valeur, index | clé, collection).

avec prédicat comme fonction personnalisée

 _.filter(myArr, function(o) { 
    return o.name == 'john'; 
 });

avec un prédicat faisant partie de l'objet filtré (le raccourci _.matches iteratee)

_.filter(myArr, {name: 'john'});

avec un prédicat comme [clé, valeur] array (le raccourci _.matchesProperty iteratee.)

_.filter(myArr, ['name', 'John']);
89
Enver Dzhaparoff

let myArr = [
    {name: "john", age:23},
    {name: "john", age:43},
    {name: "jim", age:101},
    {name: "bob", age:67},
];

// this will return old object (myArr) with items named 'john'
let list = _.filter(myArr, item => item.name === 'jhon');

//  this will return new object referenc (new Object) with items named 'john' 
let list = _.map(myArr, item => item.name === 'jhon').filter(item => item.name);

2
Nver Abgaryan

lodash a également une méthode de suppression

 var myArr = [ {name: "john", age:23}
          {name: "john", age:43}
          {name: "jim", age:101}
          {name: "bob", age:67} ];

 var onlyJohn = myArr.remove( person => { return person.name == "john" })
1
Nicole Wheeler

Avec lodash :

const myArr = [ {name: "john", age:23},
                {name: "john", age:43},
                {name: "jim", age:101},
                {name: "bob", age:67} ];

const johnArr = _.filter(myArr, person => person.name === 'john');
console.log(johnArr)

 enter image description here

Vanilla JavaScript:

const myArr = [ {name: "john", age:23},
                {name: "john", age:43},
                {name: "jim", age:101},
                {name: "bob", age:67} ];

const johnArr = myArr.filter(person => person.name === 'john');
console.log(johnArr);

 enter image description here

0
Yuci

** Filtrer par nom, âge ** De plus, vous pouvez utiliser la fonction carte 

différence entre map et filter

1. map - La méthode map () crée un nouveau tableau avec les résultats de l'appel d'une fonction pour chaque élément du tableau. La méthode map permet aux éléments d’un tableau d’être manipulés selon les préférences de l’utilisateur, renvoyant ainsi la conclusion de la manipulation choisie dans un tableau entièrement nouveau. Par exemple, considérons le tableau suivant:

2. filter - La méthode filter () crée un tableau contenant tous les éléments de tableau ayant réussi un test implémenté par la fonction fournie. La méthode de filtrage est bien adaptée aux cas particuliers où l'utilisateur doit identifier certains éléments d'un tableau partageant une caractéristique commune. Par exemple, considérons le tableau suivant:

`const users = [ 
           {name: "john", age:23},
           {name: "john", age:43},
           {name: "jim", age:101},
           {name: "bob", age:67} 
     ];

    const user = _.filter(users, {name : 'jim', age: 101});
    console.log(user);`
0
Nver Abgaryan
let myArr = [
    {name: "john", age:23},
    {name: "john", age:43},
    {name: "jim", age:101},
    {name: "bob", age:67},
];

let list = _.filter(myArr, item => item.name === "john");
0
Nver Abgaryan