2014-11-04 152 views
0

我有一个很大的json对象,我正在使用它来控制级联选择列表,我试图过滤以准备发送到服务器。Angular,过滤掉json对象

结构看起来是这样的 -

 Accounts[{name:account1, id:1, selected:false, schools:[{name:school1, id:2,selected:true}]}] 

(有多个账户,在每个多所学校,保持简单的例子目的)

我所要做的是把它通过一些地图/过滤器,并获得一系列具有selected = true的关键的学校的ID。所以我的尝试是首先筛选所有学校,然后再选择真正的学校,然后是这些学校的编号。

因此,这里是我的尝试 -

$scope.schooIDsForSave = $scope.accountTreeHere.filter(function(obj){ 
      return obj.schools; 
     }).filter(function(obj){ 
      return obj.selected; 
     }).map(function(obj){ 
      return obj.id; 
     }); 

这只返回1个ID所以我得到的东西在这里错了。我认为我对地图/过滤器的使用有些问题,因为我对它仍然很感兴趣。任何洞察力指向我在正确的方向将非常感激!谢谢阅读。

回答

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; 
}); 
+0

很好,谢谢! – ajmajmajma 2014-11-04 17:17:03