我有一个很大的json对象,用于控制级联选择列表,我试图过滤以准备发送到服务器。
结构看起来像这样 -
Accounts[{name:account1, id:1, selected:false, schools:[{name:school1, id:2,selected:true}]}]
(多个帐户中各有多个学校,为了示例目的,保持简单)
我想要做的是通过一些地图/过滤器来实现一系列具有selected = true键的学校ID。所以我的尝试是首先筛选所有学校,然后选择真实的学校,然后只是那些学校的ID。
所以这是我的尝试 -
$scope.schooIDsForSave = $scope.accountTreeHere.filter( function(obj){
return obj.schools;
}).filter( function(obj){
return obj.selected;
}).map(function(obj){
return obj.id;
});
这只返回1个身份证,所以我在这里弄错了。我认为我对map / filter的使用有问题,因为我仍然不熟悉它。任何有关我指向正确方向的见解都将非常感激!谢谢你的阅读。
答案 0 :(得分:1)
给定结构
var schools = [{
name: 'account1',
id: 1,
selected: false,
schools: [{
name: 'school1',
id: 2,
selected: true
}]
}, {
name: 'account2',
id: 2,
selected: false,
schools: [{
name: 'school2',
id: 3,
selected: false
}]
}];
尝试
var ids = schools.map(function(v) {
return v.schools;
}).reduce(function(a, b) {
return a.concat(b);
}).filter(function(v) {
return v.selected;
}).map(function(v) {
return v.id;
});