2016-02-16 110 views
0

如何匹配每個包含「tags」數組匹配值的文章對象,例如,如果我只想列出包含「foo」和「bar」關鍵字的文章?JSON:過濾數組中的匹配值

[ 
    { 
    "articles": [ 
     { 
     "_id": "0", 
     "body": "This is a test article 1.", 
     "tags": [ "foo", "bar" ] 
     }, 
     { 
     "_id": "2", 
     "body": "This is a test article 2.", 
     "tags": [ "baz", "bam" ] 
     }, 
     { 
     "_id": "4", 
     "body": "This is a test article 4.", 
     "tags": [ "foo", "bar", "baz", "bam" ] 
     } 
    ] 
    } 
] 

這裏是我的快速應用程序中的路由器被調用這個JSON文件:

router.get('/:tag', function (req, res, next) { 
    fsAsync(function(err, data) { 
    var articles = data[0].articles.reverse(); 

    var q = articles.filter(function (article) { 
     return article.tags === req.params.tag; 
    }); 

    var json = [{ articles: q }]; 

    // I want the results here 
    console.log(json); 

    res.render('blog-tag', { 
     layout: 'main', 
     data: json 
    }); 
    }); 
}); 

回答

1

看看標籤是在數組中。

var q = articles.filter(function (article) { 
    var tagInArray = false; 
    article.tags.forEach(function(tag){ 
     if(tag === req.params.tag){ 
     tagInArray = true; 
     } 
    }); 
    return tagInArray; 
}); 

的IndexOf

+0

謝謝!這是一種魅力! – Lanti

0

標籤是在陣列

var q = articles.filter(function (article) { 
for (var i = 0;i<article.tags.length;i++){ 
if(article.tags[i] === req.params.tag) 
return article.tags === req.params.tag; 
} 
}); 
+0

這段代碼看起來更簡單,但不幸的是沒有爲我工作。只在控制檯中返回'[]'。 :( – Lanti