2013-09-30 9 views
61

मेरे पास यह सरणी है। प्रारंभ तिथि के अनुसार इसे क्रमबद्ध करने के लिए मैं अंडरस्कोर '_.sortBy' का उपयोग कैसे करूं?अंडरस्कोर सॉर्ट के साथ ऑब्जेक्ट सॉर्टिंग के साथ ऐरे

[ 
    { 
     id: 'oljw832021kjnb389xzll323jk', 
     start: { dateTime: '2013-09-26T13:30:00-07:00' }, 
     end: { dateTime: '2013-09-26T14:30:00-07:00' }, 
    }, 
    { 
     id: 'ed7l5tmckdp0lm90nvr4is3d4c', 
     start: { dateTime: '2013-09-26T15:30:00-07:00' }, 
     end: { dateTime: '2013-09-26T16:30:00-07:00' }, 
    }, 
    { 
     id: 'etmasdsackdp0kjl0nvrkopioqw', 
     start: { dateTime: '2013-09-26T18:00:00-07:00' }, 
     end: { dateTime: '2013-09-26T19:00:00-07:00' }, 
    } 
] 

उत्तर

145

पुनरावर्तक समारोह, नहीं एक संपत्ति के लिए एक एकल स्ट्रिंग का उपयोग करें:

var sorted = _(list).sortBy(
        function (item) {       
         return [new Date(item.effectiveDate).getTime(), item.batchId]; 
        }), "batchId"); 

आप इसे उतरते चाहते हैं तो यह एक ही बात है:

_.sortBy(arr, function(o) { return o.start.dateTime; }) 
+0

यह आरोही क्रम में देता है, लेकिन तारीख के अवरोही क्रम को कैसे क्रमबद्ध करें? – Robin

+5

@ रोबिनैट: यदि आप अवरोही क्रम करना चाहते हैं तो आप बस डेटाटाइम – Bergi

+14

को अस्वीकार कर सकते हैं, फिर यदि आप दिनांक के अवरोही क्रम चाहते हैं तो केवल arr.reverse() – JrBriones

1

मैं इसे इस तरह से किया था लेकिन * -1

var sorted = _(list).sortBy(
        function (item) {       
         return [new Date(item.effectiveDate).getTime()*-1, item.batchId]; 
        }), "batchId"); 

I n इस उदाहरण में मैं दो फ़ील्ड द्वारा आदेश दे रहा हूं, आप item.batchId के बारे में भूल सकते हैं।

उम्मीद है कि यह किसी की मदद करेगा।

संबंधित मुद्दे