2015-01-31 3 views
-1

Meteor에서 맵 기능을 사용한 후에 정렬을 수행해야하는 부분을 해결할 수 없습니다. 내가 반환 된 결과를 얻고 오름차순으로 표시 할 수 있기를 바랍니다. Meteor API 문서는 정렬 지정자에 대해 약간 밝습니다.Meteor에서 오름차순으로 오름차순 정렬

Template.foodList.helpers({ 
    foodCounts: function() { 
    return _.map(_.countBy(Foods.find().fetch(), 'text'), function(value, key){ 
     return {text: key, count: value}; 
    }); 
    } 
}); 

답변

1

Template.foodList.helpers({ 
    foodCounts: function() { 
    var data = _.map(_.countBy(Foods.find().fetch(), 'text'), function(value, key){ 
      return {text: key, count: value}; 
    }); 
    // sort by `text` field 
    return _.sortBy(data, function(datum){ 
      return datum.text.toLowerCase(); 
    }); 
    } 
}); 

또는

는 여기가 짧지 만 솔루션 밑줄 사용하고 체인의 더 우아한!
+0

대단히 감사합니다. 정말 멋진 답변입니다. 한 가지 질문. 카운트에서 오름차순으로 정렬하는 방식으로 내림차순 등을 뒤집을 수 있습니까? –

+0

편집 : 해결했습니다. - .sortBy ('- count')에 음수 기호를 추가했습니다. –

+0

실제로 그것은'.sortBy (function (obj) {return -obj.count;})'입니다. '-count'를 사용하면 '-count'라는 필드를 찾습니다.이 필드는 발견되지 않으므로 정렬을 적용하지 않습니다. 또는'_.chain'의 결과를 얻은 다음'.reverse'를 호출 할 수도 있습니다. –

1

_.countBy은 데이터 순서를 조작하므로 그 후에 정렬 할 수 있습니다. 아마 _.map을 따라 분류하는 것이 가장 좋습니다.

Template.foodList.helpers({ 
    foodCounts: function() { 
    return _.chain(Foods.find().fetch()) 
     .countBy('text') 
     .map(function(v, k) {return {text: k, count: v};}) 
     .sortBy('count') 
     .value(); 
    } 
}); 
+0

감사를 도움, 모두 답변을 원하는 방식으로 작동하지만 체인 생각이 조금 있습니다 :

Template.foodList.helpers({ foodCounts: function() { var data = _.map(_.countBy(Foods.find().fetch(), 'text'), function(value, key){ return {text: key, count: value}; }); // sort by count return _.sortBy(data, function(datum){ return datum.count; }); } });