2012-06-28 20 views
13

क्या _.sortBy विधि या लाइब्रेरी के किसी अन्य भाग के साथ बॉक्स में ऐसा करने का कोई तरीका है?क्रमबद्ध रीढ़ की हड्डी संग्रह वर्णानुक्रम

+7

आपका प्रश्न अंडरस्कोर कहते हैं से है, लेकिन आप से एक जवाब स्वीकार किए जाते हैं रीड की हड्डी। मैं इस पृष्ठ पर पहुंचा क्योंकि मैं वास्तव में अंडरस्कोर उत्तर की तलाश में हूं, इसलिए यह शीर्षक भ्रामक है। शीर्षक में संशोधन करने पर विचार करें। –

उत्तर

10

चूंकि आपने बैकबोन.जेएस टैग के साथ अपना प्रश्न टैग किया है, तो मुझे लगता है कि आप संग्रह को सॉर्ट करना चाहते हैं, आपको बस अपने संग्रह पर comparator फ़ंक्शन प्रदान करने की आवश्यकता है और रीढ़ की हड्डी संग्रह को क्रमबद्ध रखेगी।

अपने प्रश्न विशेष रूप से alphabeticical छंटाई है, तो मुझे विश्वास है कि डिफ़ॉल्ट सॉर्ट है, backbone.js प्रलेखन (मैं ऊपर से जुड़ा हुआ)

chapters.comparator = function(chapter) { 
    return chapter.get("page"); 
}; 
+1

यह वास्तव में वही है जो मुझे चाहिए था। जब तक आप उन्हें इंगित नहीं करते थे तब तक मैं दस्तावेज़ों में तुलनाकर्ताओं में नहीं चला था। आपका बहुत बहुत धन्यवाद! –

25

आपका मतलब this है?

var array = [ 
    { name: "banana" }, 
    { name: "carrot" }, 
    { name: "apple" } 
]; 

var sorted = _(array).sortBy("name"); 

मैं कहूंगा कि यह बॉक्स से बाहर काम करता है।

आप तार का एक साधारण सरणी सॉर्ट करने के लिए करना चाहता था, तो आप शायद सिर्फ sort उपयोग करना चाहते हैं:

var flatArray = ["banana", "carrot", "apple"]; 

flatArray.sort(); 

देखें here। यह भी काम करता है।

ध्यान दें कि अंडरस्कोर के sortBy रिटर्न एक नई सरणी जो सॉर्ट हो जाता है, जहां जावास्क्रिप्ट के अंतर्निहित sort समारोह जगह में एक सरणी सॉर्ट करता है।

+1

यह एक बहुत ही उपयोगी उदाहरण है। आपका बहुत बहुत धन्यवाद! – ducin

+0

_.sortBy() यदि आप पूंजी सी के साथ "गाजर" लिखते हैं तो सही ढंग से काम नहीं करेगा। "गाजर" पहली अनुक्रमणिका में होगा। http://jsfiddle.net/uHtUX/39/ – Andrej

+0

@Andrej "सही तरीके से काम नहीं करेगा"? मुझे लगता है कि यह बहुत उचित है कि 'sortBy' के लिए उपयोग किए गए डिफ़ॉल्ट तुलना फ़ंक्शन मानक अल्फान्यूमेरिक ऑर्डरिंग का पालन करेंगे (यानी बस अपने वेब कंसोल में' 'ए' <'ए' बनाम 'ए' <'ए' 'का प्रयास करें)। यदि आप एक केस-असंवेदनशील प्रकार चाहते थे तो आप पहले से मूल्यों पर 'toLowerCase' को कॉल करने के लिए एक फ़ंक्शन प्रदान कर सकते हैं, जैसे: http://jsfiddle.net/uHtUX/40/ –

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