2016-12-10 1 views
0

개체 특성 및 하위 특성별로 정렬해야하는 요구 사항이 있으므로이를 처리하는 더 좋은 방법이 있습니다.하위 특성이있는 Lodash OrderBy

const testData=[{id:1,name:"test",notes:"test notes",child:[{name:"weight",value:3},{name:"category",value:"testCategory"},{name:"amount",value:2}]},{id:2,name:"test2",notes:"test notes2",child:[{name:"weight",value:4},{name:"category",value:"testCategory"},{name:"amount",value:3}]}] 

나는

_.orderBy(testData,['notes'],[asc]) 
_.orderBy(testData,(t)=>{ 
       return _.filter(t.child, (c)=> { 
          return c.name == "category" 
         })[0]['value'] 

      } 

아래 어떻게 하나 ORDERBY

+0

참조 lodash의 예와 'age' by 내림차순 "https://lodash.com/docs/#orderBy –

+0

예, 차이점은 속성 수준입니다. 부모 수준입니다. 자식 수준입니다. 하나의 배열에서 결합하는 방법은 무엇입니까? – Kamaraju

답변

1

사용하는 여러 신원 반복자라고있을 것

_.orderBy(
    testData, 
    [ 
     'notes', 
     function(item) { 
      return _.chain(item).get('child').find({name: 'category'}).get('value').value(); 
     } 
    ], 
    ['asc', 'desc'] 
); 
오름차순으로 user`` "에 대한
+0

같은 문제는 두 번째 속성 인 – Kamaraju

+0

바이올린이 작동하지 않음을 보여주기 위해 정렬하지 않습니다. https://jsfiddle.net/Kamaraju333/359dysrg/ – Kamaraju

+0

@Kamaraju는 '자식'키가없는 피들의 데이터에 있지만 – stasovlas

1
에 둘을 결합하여 같이 개별적으로 알고있는 이름 (오름차순) 및 카테고리 (내림차순)

을 기준으로 정렬 할 필요가

iteratee 함수을 사용하여 으로 주문하려는 데이터로 만듭니다.

예를 들어, 우리가 추정 할 수있는 경우 .child 다음 카테고리

_.orderBy(testData, data => { 
    return [ 
     data.notes, 
     data.child.find(child => child.name === 'category').value 
    ]; 
}, ['asc', 'desc']);