2013-07-08 8 views
6

मुझे वर्णमाला के आधार पर एक सरणी सॉर्ट करने की आवश्यकता है। मैंने जावास्क्रिप्ट की सॉर्ट() विधि का प्रयास किया है, लेकिन यह काम नहीं करता है क्योंकि मेरे सरणी में संख्याएं, लोअरकेस अक्षरों और अपरकेस अक्षरों का समावेश होता है। क्या कोई इस से मेरी मदद कर सकता है? धन्यवादवर्णमाला के आधार पर एक सरणी सॉर्ट करना?

उदाहरण के लिए मेरी सरणी है:

[ 
    "@Basil", 
    "@SuperAdmin", 
    "@Supreme", 
    "@Test10", 
    "@Test3", 
    "@Test4", 
    "@Test5", 
    "@Test6", 
    "@Test7", 
    "@Test8", 
    "@Test9", 
    "@a", 
    "@aadfg", 
    "@abc", 
    "@abc1", 
    "@abc2", 
    "@abc5", 
    "@abcd", 
    "@abin", 
    "@akrant", 
    "@ankur", 
    "@arsdarsd", 
    "@asdd", 
    "@ashaa", 
    "@aviral", 
    "@ayush.kansal", 
    "@chris", 
    "@dgji", 
    "@dheeraj", 
    "@dsfdsf", 
    "@dualworld", 
    "@errry", 
    "@george", 
    "@ggh", 
    "@gjhggjghj" 
] 
+0

क्या अक्षरों और संख्याओं में शामिल होने के बाद आप "वर्णमाला" को सॉर्ट करना चाहते हैं? * डिफ़ॉल्ट वर्णमाला के साथ क्या * गलत है, आप किस परिणाम की अपेक्षा करते हैं? – Bergi

+0

ऐरे मुझे क्रमबद्ध लगता है ... – mishik

+4

आपका वांछित आउटपुट वास्तव में क्या है? – Christoph

उत्तर

7
a.sort(function(a, b) { 
    var textA = a.toUpperCase(); 
    var textB = b.toUpperCase(); 
    return (textA < textB) ? -1 : (textA > textB) ? 1 : 0; 
}); 

This काम करना चाहिए (jsFiddle)

+0

धन्यवाद यह काम करता है :) –

4
function alphabetical(a, b){ 
    var c = a.toLowerCase(); 
    var d = b.toLowerCase(); 
    if (c < d){ 
     return -1; 
    }else if (c > d){ 
     return 1; 
    }else{ 
     return 0; 
    } 
} 


yourArray.sort(alphabetical); 
1

एक तत्व के लिए लागू एक महत्वपूर्ण समारोह से एक सरणी (toUpperCase यहाँ) क्रमबद्ध करने के लिए , Schwartzian transform, उर्फ ​​"सजाने-प्रकार-अनावृत" आपकी पसंद की तकनीक है:

cmp = function(x, y) { return x > y ? 1 : x < y ? -1 : 0 } 

sorted = array.map(function(x) { 
    return [x.toUpperCase(), x] 
}).sort(function(x, y) { 
    return cmp(x[0], y[0]) 
}).map(function(x) { 
    return x[1] 
}) 

इस दृष्टिकोण का मुख्य लाभ यह है कि मुख्य तत्व प्रत्येक तत्व के लिए बिल्कुल एक बार कहा जाता है, जो महत्वपूर्ण हो सकता है जब कुंजी भारी हो या साइड इफेक्ट्स हो।

मुझे एहसास है कि आप अभी एक साधारण उत्तर की तलाश में हैं, लेकिन भविष्य में सीखने पर विचार करने के लिए यह कुछ हो सकता है।

+0

'[" a "," a! "]' या समान (कोई वर्ण <',') – Bergi

+0

@ बर्गि: बेशक यह करता है। – georg

+0

नहीं, यह '[" ए! "," ए "] पैदा करता है, जबकि यह' ["a", "a!"] 'होना चाहिए। आपको केवल सरणी के सजाए गए हिस्से से क्रमबद्ध करने की आवश्यकता होगी। – Bergi

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