मैं एक मिश्रित सरणी है कि मैं digit-कैसे मिश्रित सांख्यिक/अक्षरांकीय सरणी जावास्क्रिप्ट में
['A1', 'A10', 'A11', 'A12', 'A3A', 'A3B', 'A3', 'A4', 'B10', 'B2', 'F1', '1', '2', 'F3']
द्वारा नंबर, वर्णमाला के आधार पर सॉर्ट और उसके बाद की जरूरत है सॉर्ट करने के लिए कैसे मैं इसे होने की क्रमित करूं तरह:
['1', '2', 'A1', 'A2', 'A3', 'A3A', 'A3B', 'A4', 'A10', 'A11', 'A12', 'B2', 'B10', 'F1', 'F3']
यहाँ मैं क्या करने की कोशिश की है:
var reA = /[^a-zA-Z]/g;
var reN = /[^0-9]/g;
function sortAlphaNum(a, b) {
var AInt = parseInt(a.Field, 10);
var BInt = parseInt(b.Field, 10);
if (isNaN(AInt) && isNaN(BInt)) {
var aA = (a.Field).replace(reA, "");
var bA = (b.Field).replace(reA, "");
if (aA === bA) {
var aN = parseInt((a.Field).replace(reN, ""), 10);
var bN = parseInt((b.Field).replace(reN, ""), 10);
return aN === bN ? 0 : aN > bN ? 1 : -1;
} else {
return aA > bA ? 1 : -1;
}
} else if (isNaN(AInt)) {//A is not an Int
return 1;//to make alphanumeric sort first return -1 here
} else if (isNaN(BInt)) {//B is not an Int
return -1;//to make alphanumeric sort first return 1 here
} else {
return AInt > BInt ? 1 : -1;
}
}
fieldselecteddata.sort(sortAlphaNum);
लेकिन यह है कि केवल यह वर्णानुक्रम क्रमबद्ध करता/1 सांख्यिक एक के संयोजन तक सांख्यिक डी 1 चरित्र जैसे A1
, A2
, A10
। लेकिन अगर A3A
, A3B
जैसे मान होंगे, तो यह ठीक से सॉर्ट नहीं होगा। क्या यह सीधे जावास्क्रिप्ट या jQuery के साथ किया जा सकता है?
@RameshRajendran कि ** नहीं ** एक विषय से हटकर सवाल के लिए एक वैध बहाना, यह वास्तव में विषय पर और एक अच्छा सवाल है। इससे कोई फर्क नहीं पड़ता कि यह एक होमवर्क सवाल है या नहीं। प्रयोक्ता ने एक प्रयास किए गए समाधान के साथ एक स्पष्ट लक्ष्य और आउटपुट प्रस्तुत किया। यह तब बेहतर है जब मैं यहां देखे जाने वाले अधिकांश प्रश्न। –
@RameshRajendran यह वास्तव में एक बहुत अच्छा सवाल है। इसे बंद करने के बजाय संरक्षित किया जाना चाहिए। –