Filtrage tableau d'objets avec lodash basé sur la valeur de la propriété

Nous avons un tableau d'objets en tant que tel

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ù s'appelle john avec lodash?

36
demandé sur sarsnake 2016-02-03 19:47:34

6 réponses

Lodash a une fonction " map " qui fonctionne exactement 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)
10
répondu Dustin Poissant 2016-11-22 10:55:04

utilisez lodash _.filter méthode:

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

Itère sur les éléments de la collection, en retournant un tableau de tous les éléments prédicat retourne truthy pour. Le prédicat est invoqué avec trois arguments: (valeur, index|clé, collection).

avec predicate comme fonction personnalisée

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

avec predicate comme partie de l'objet filtré (_.matches iteratee abrégée)

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

avec le prédicat [touche, valeur] tableau (_.matchesProperty iteratee de sténographie.)

_.filter(myArr, ['name', 'John']);
79
répondu Enver Dzhaparoff 2016-02-03 18:01:39

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);
1
répondu Nver Abgaryan 2018-08-08 09:34:33

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

Vanille 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
répondu Yuci 2018-07-29 09:26:01

lodash a aussi 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" })
0
répondu Nicole Wheeler 2018-07-29 21:36:43


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");
-1
répondu Nver Abgaryan 2018-08-08 10:25:22