2016-02-03 37 views

Trả lời

4

Lodash có một "bản đồ" chức năng hoạt động giống như 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

cảm ơn bạn nhưng tôi đã hỏi câu trả lời cụ thể. Tôi có thể tự mình làm một vòng lặp. – sarsnake

+0

Bạn không đọc phần thứ hai của câu trả lời? –

+1

Tôi đã xóa câu trả lời không liên quan và sửa tập lệnh của bạn vì nó có lỗi trong đó – Technotronic

60

Sử dụng lodash _.filter phương pháp:

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

lặp trên các yếu tố của bộ sưu tập, trả lại một mảng của tất cả các phần tử của các phần tử trả về tính trung thực cho. Vị từ được gọi với ba đối số: (giá trị, chỉ mục | khóa, bộ sưu tập).

với vị như chức năng tùy chỉnh

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

với vị ngữ như một phần của lọc đối tượng (các _.matches iteratee viết tắt)

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

với vị như [giá trị quan trọng,] mảng (viết tắt là _.matchesProperty iteratee.)

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

Bạn nên đề cập rằng ví dụ của bạn bằng cách sử dụng viết tắt _.matchesProperty iteratee chỉ hoạt động từ lodash v4. Đối với lodash v3, không có dấu ngoặc đơn. – NicBright

+0

@NicBright đúng, thx cho nhận xét –

+1

Liên kết tới tài liệu sẽ hữu ích: 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'});
Các vấn đề liên quan