2014-11-04 150 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