如何使用AngularJS过滤对象属性

时间:2014-03-04 16:41:24

标签: javascript json angularjs

我有一个类别对象数组

categoriesTree : [
    {name: 'cat1', id:1, selected : true},
    {name: 'cat2', id:2, selected : false},
    {name: 'cat3', id:3, selected : true},
    {name: 'cat4', id:4, selected : false},
    {name: 'cat6', id:6, selected : true},
]

要获取我所选择的类别:

selectedCategories = filterFilter($scope.categoriesTree, {selected:true})

这会给我:

categoriesTree : [
    {name: 'cat1', id:1, selected : true},
    {name: 'cat3', id:3, selected : true},
    {name: 'cat6', id:6, selected : true},
]

但是为了减少要发送的POST数据,我只想要id attribue所以我想要一个像这样的数组:

['1', '3', '6']

是否可以使用AngularJS过滤器?

3 个答案:

答案 0 :(得分:2)

res = categoriesTree.map(function(el) { return el.id; });

简短而简单,具有良好的性能。

要回答您的问题:不,您可以使用过滤器,但可以使用forEach

答案 1 :(得分:0)

您可以创建自己的自定义angularjs过滤器,不仅可以“过滤”,还可以将您的设置“投影”到不同的集合中。我认为你肯定可以将每个类别对象投射到它的ID中。

有关如何在angularjs中创建自定义过滤器的示例,请参阅here

答案 2 :(得分:0)

您可以使用下划线_.pluck方法。

selectedCategories = _.pluck(_.filter(categoriesTree, function(category) {
    return category.selected;
}), 'id');

返回所有id的值的数组,其中相应的selected值为true