2016-02-03 14 views

risposta

4

Lodash ha una funzione di "mappa" che funziona proprio come 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)

+0

grazie ma ho chiesto specificatamente la risposta di lodash. Posso fare un ciclo me stesso. – sarsnake

+0

Non hai letto la seconda parte della risposta? –

+1

Ho rimosso la risposta irrilevante e corretto lo script poiché conteneva errori – Technotronic

60

Usa lodash _.filter metodo:

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

iterazioni sulle elementi della collezione, che restituiscono una la matrice di tutti gli elementi predicati restituisce per verità. Il predicato viene invocato con tre argomenti: (valore, chiave indice |, raccolta).

con predicato come funzione personalizzata

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

con predicato come parte di oggetto filtrato (l'abbreviazione _.matches iteratee)

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

con predicato come [, valore chiave] array (la stenografia di iteratee _.matchesProperty)

_.filter(myArr, ['name', 'John']); 
+1

È necessario ricordare che l'esempio che si utilizza con _matchesProperty iteratee stenografia funziona solo da lodash v4. Per lodash v3 è senza parentesi. – NicBright

+0

@NicBright true, thx per il commento –

+1

Un collegamento ai documenti sarebbe utile: https://lodash.com/docs/4.17.4#filter –

0

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

 
let list = _.where(myArr,{name:'john'});