निम्न फ़ंक्शन आपको एक या एक से अधिक गुणों पर ऑब्जेक्ट की एक सरणी को सॉर्ट करने की अनुमति देगा, या तो प्रत्येक संपत्ति पर आरोही (डिफ़ॉल्ट) या अवरोही, और आपको यह चुनने की अनुमति देगा कि मामला संवेदनशील तुलना करने के लिए है या नहीं। डिफ़ॉल्ट रूप से, यह फ़ंक्शन केस असंवेदनशील प्रकार करता है।
पहला तर्क ऑब्जेक्ट युक्त सरणी होना चाहिए। बाद के तर्क (ओं) को अलग-अलग ऑब्जेक्ट गुणों को संदर्भित करने वाले स्ट्रिंग्स की अल्पविराम से अलग सूची होनी चाहिए। अंतिम तर्क (जो वैकल्पिक है) केस संवेदनशील प्रकार का उपयोग करने या न करने के लिए चुनने के लिए एक बूलियन हैtrue
केस संवेदी प्रकार के लिए ।
फ़ंक्शन डिफ़ॉल्ट रूप से आरोही क्रम में प्रत्येक गुण / कुंजी को सॉर्ट करेगा। यदि आप एक विशेष कुंजी को अवरोही क्रम में क्रमबद्ध करना चाहते हैं, तो इस प्रारूप में एक सरणी में पास करें:['property_name', true]
:।
यहाँ एक स्पष्टीकरण के बाद फ़ंक्शन के कुछ नमूना उपयोग किए गए हैं (जहां homes
एक सरणी है जिसमें ऑब्जेक्ट्स हैं):
objSort(homes, 'city')
-> शहर द्वारा क्रमबद्ध (आरोही, मामला संवेदनशील)
objSort(homes, ['city', true])
-> शहर के अनुसार क्रमबद्ध (अवरोही, केस-संवेदी)
objSort(homes, 'city', true)
-> शहर की तरह तो कीमत (आरोही, मामला संवेदनशील )
objSort(homes, 'city', 'price')
-> शहर की तरह तो कीमत (दोनों आरोही, मामला संवेदनशील)
objSort(homes, 'city', ['price', true])
-> शहर के अनुसार (आरोही) तब मूल्य (अवरोही), केस-संवेदी)
और आगे की हलचल के बिना, यहाँ फ़ंक्शन है:
function objSort() {
var args = arguments,
array = args[0],
case_sensitive, keys_length, key, desc, a, b, i;
if (typeof arguments[arguments.length - 1] === 'boolean') {
case_sensitive = arguments[arguments.length - 1];
keys_length = arguments.length - 1;
} else {
case_sensitive = false;
keys_length = arguments.length;
}
return array.sort(function (obj1, obj2) {
for (i = 1; i < keys_length; i++) {
key = args[i];
if (typeof key !== 'string') {
desc = key[1];
key = key[0];
a = obj1[args[i][0]];
b = obj2[args[i][0]];
} else {
desc = false;
a = obj1[args[i]];
b = obj2[args[i]];
}
if (case_sensitive === false && typeof a === 'string') {
a = a.toLowerCase();
b = b.toLowerCase();
}
if (! desc) {
if (a < b) return -1;
if (a > b) return 1;
} else {
if (a > b) return -1;
if (a < b) return 1;
}
}
return 0;
});
} //end of objSort() function
और यहाँ कुछ नमूना डेटा है:
var homes = [{
"h_id": "3",
"city": "Dallas",
"state": "TX",
"zip": "75201",
"price": 162500
}, {
"h_id": "4",
"city": "Bevery Hills",
"state": "CA",
"zip": "90210",
"price": 1000000
}, {
"h_id": "5",
"city": "new york",
"state": "NY",
"zip": "00010",
"price": 1000000
}, {
"h_id": "6",
"city": "Dallas",
"state": "TX",
"zip": "85000",
"price": 300000
}, {
"h_id": "7",
"city": "New York",
"state": "NY",
"zip": "00020",
"price": 345000
}];