我有一个类别对象数组
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过滤器?
答案 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
。