2015-12-17 25 views
6

Ich habe folgendes Objekt ein Array mit posts:Lodash Filter verschachteltes Objekt

var posts = { 
    "posts": [{ 
    "id": 83, 
    "title": "Onfido helps iCracked win customers’ confidence", 
    "slug": "onfido-helps-icracked-win-customers-confidence", 
    "tags": [{ 
     "id": 25, 
     "slug": "case-studies" 
    }, { 
     "id": 10, 
     "slug": "industry-news" 
    }] 
    }, { 
    "id": 82, 
    "title": "Machine learning makes banking more personal", 
    "slug": "machine-learning-makes-banking-more-personal", 
    "tags": [{ 
     "id": 10, 
     "slug": "industry-news" 
    }] 
    }, { 
    "id": 81, 
    "title": "11 reasons to join Onfido", 
    "slug": "ten-reasons-to-join-onfido", 
    "tags": [{ 
     "id": 100, 
     "slug": "our-expertise" 
    }] 
    }] 
} 

Lodash Verwendung, ich möchte "case-studies" alle Beiträge mit tags.slug des Wert extrahieren. Zurzeit habe ich Folgendes ohne Glück versucht:

_.filter(posts, function(post) { 
    _.filter(post.tags, function(tag) { 
    return _.where(tag, {'slug': 'case-studies'}) 
    }) 
}) 

Wie würde ich das tun?

Antwort

8

Lodash

var out = _.filter(posts.posts, function (post) { 
    return _.some(post.tags, { 'slug': 'case-studies' }); 
}); 

Vanille JS

var out = posts.posts.filter(function (el) { 
    return el.tags.some(function (tag) { 
    return tag.slug === 'case-studies'; 
    }); 
}); 
+1

Es funktioniert! Ich danke dir sehr. – gosseti

0

Ergebnis mit über Funktion loadash:

0: Object 
id: 83 
slug: "onfido-helps-icracked-win-customers-confidence" 
tags: Array[2] 
     0: Object 
      id: 25 
      slug: "case-studies", 
     1: Object 
      id: 10 
      slug: "industry-news" 

    //while the expected one is : 
    0: Object 
     id: 83 
     slug: "onfido-helps-icracked-win-customers-confidence" 
     tags: Array[1] 
      0: Object 
      id: 25 
      slug: "case-studies" 

sein soll nur ein Objekt innerhalb von Tags zurück.

Verwandte Themen