2016-02-03 37 views

Odpowiedz

4

Lodash posiada funkcję "map", który działa podobnie jak 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

dziękuję, ale poprosiłem o odpowiedź. Mogę sam zrobić pętlę. – sarsnake

+0

Czy nie przeczytałeś drugiej części odpowiedzi? –

+1

Usunąłem nieistotną odpowiedź i naprawiłem twój skrypt, ponieważ zawierał w nim błędy. – Technotronic

60

Zastosowanie lodash _.filter metoda:

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

iteracyjnie do elementów kolekcji, zwrócenie tablica wszystkich elementów predykatu zwraca truey dla. Predykat jest wywoływany trzema argumentami: (wartość, indeks | klucz, kolekcja).

z źródłowe, jak funkcja użytkownika

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

z źródłowe, jak części filtrowanego obiektu (skrótowym _.matches iteratee)

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

z źródłowe, jak [klucz, wartość] macierzy (stenogram _.matchesProperty iteratee.)

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

Powinieneś wspomnieć, że twój przykład używając skrótów iteratee _.matchesProperty działa tylko z lodash v4. Dla lodash v3 jest bez nawiasów tablicowych. – NicBright

+0

@NicBright prawda, thx za komentarz –

+1

Pomocne byłoby łącze do dokumentów: 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'});