मुझे जावास्क्रिप्ट ऑब्जेक्ट्स की एक सरणी मिली है जिसे मैं एक ऐसी संपत्ति द्वारा पार-संगत रूप से सॉर्ट करना चाहता हूं जो हमेशा एक वैकल्पिक एकल अक्षर के साथ एक सकारात्मक पूर्णांक होता है समाप्त। मैं एक समाधान है कि कम से कम में काम करता है के लिए देख रहा हूँ Firefox 3 और Internet Explorer 8 निकटतम मैं इस तरह के एक प्रकार का कार्य करने के लिए आए हैं निम्नलिखित है:IE8 में जावास्क्रिप्ट: अल्फान्यूमेरिक प्रॉपर्टी द्वारा ऑब्जेक्ट्स की सरणी को सॉर्ट करने के लिए कैसे करें
var arrayOfObjects = [{id: '1A', name: 'bar', size: 'big'}, {id: '1C', name: 'bar', size: 'small'}, {id: '1', name: 'foo', size: 'big'}, {id: '1F', name: 'bar', size: 'big'}, {id: '1E', name: 'bar', size: 'big'}, {id: '1B', name: 'bar', size: 'small'}, {id: '1D', name: 'bar', size: 'big'}, {id: '1G', name: 'foo', size: 'small'}, {id: '3', name: 'foo', size: 'small'}, {id: '23', name: 'foo', size: 'small'}, {id: '2', name: 'foo', size: 'small'}, {id: '1010', name: 'foo', size: 'small'}, {id: '23C', name: 'foo', size: 'small'}, {id: '15', name: 'foo', size: 'small'}]
arrayOfObjects.sort(function(a, b){
return (a.id < b.id ? -1 : a.id == b.id ? 0 : 1);
});
के बाद तो हल कर जा रहा है, arrayOfObjects प्रिंट देता है :
1, foo, बड़े
1010, foo, छोटे
15, foo, छोटे
1 ए, बार, बड़ा
1 बी, बार, छोटे
1C, बार छोटे
-1 डी, बार, बड़ा
1E, बार, बड़ा
1F, बार, बड़ा
1G, foo, छोटे
2, foo, छोटे
23, foo, छोटे
23 सी, foo, छोटे
3, foo , छोटे
हालांकि, मैं क्रम में नीचे प्रिंट करने की arrayOfObjects चाहते हैं:
1, foo, बड़े
1 ए, बार, बड़ा
1 बी , बार, छोटे
1C, बार, छोटे
-1 डी, बार, बड़ा
1E, बार, बड़ा
1F, बार, बड़े
1G, foo, छोटे
2, foo छोटे
3, foo, छोटे
15, foo, छोटे
23, foo, छोटे
23 सी, foo, छोटे
1010, foo, छोटे
यह देखते हुए कि, मैं कैसे अब ठीक कर सकता है ओवी फ़ंक्शन ताकि वस्तुओं को प्राथमिक कुंजी के रूप में क्रमबद्ध किया जा सके और द्वितीयक कुंजी के रूप में अक्षर? किसी भी सहायता के लिए अग्रिम रूप से धन्यवाद।
regex शाब्दिक प्रत्येक यात्रा करने के लिए किसी भी कीमत नहीं जोड़ता है। आप बाहरी आत्म निष्पादन समारोह से छुटकारा पाने और आंतरिक कार्य के अंदर स्प्लिटर घोषित करने से बेहतर होंगे। –
इसके अलावा, महान जवाब। यह उत्तर देने के लिए तैयार किए जा रहे उत्तर से काफी अधिक संक्षिप्त है :) –
मेरे पास रेगेक्स को दोहराने के बारे में कुछ बात है - यह प्रदर्शन के लिए इतना नहीं है क्योंकि यह रखरखाव के बारे में है। हो सकता है कि एक बार सौ कोशिशों में मुझे पहली बार एक रेगेक्स सही मिलेगा, इसलिए मैं इसे दोहराने की संख्या को कम करना चाहता हूं। बेशक मैं इसे फंक्शन बॉडी में 'var' के रूप में टाइप कर सकता था; मैं इसके बारे में ज्यादा नहीं सोच रहा था। – Pointy