Angular,过滤掉json对象

时间:2014-11-04 16:43:52

标签: javascript angularjs

我有一个很大的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的使用有问题,因为我仍然不熟悉它。任何有关我指向正确方向的见解都将非常感激!谢谢你的阅读。

1 个答案:

答案 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;
});