2014-11-04 2 views
0

큰 json 객체가 있습니다. 서버로 전송하기 위해 준비하기 위해 필터링하려고하는 계단식 선택 목록을 제어하는 ​​데 사용하고 있습니다.각도, json 객체를 필터링합니다.

내가 뭘하려고 오전 (예를 목적으로 단순하게 유지, 각각의 여러 학교와 여러 계정 포함)

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

일부를 넣어 -

구조는 다음과 같이 보입니다 maps/filters를 선택하고 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 개) 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