दिलचस्प पोस्ट
प्रिंट पूर्वावलोकन मोड में क्रोम के एलिमेंट इंस्पेक्टर का उपयोग करना? प्रतिनिधिमंडल: ईवेंट एमीटर या अंगुल्य 2 में अवलोकन Ggplot में एक पूर्व परिभाषित रंग पैलेट का उपयोग करना Socket.IO 1.x और Express 4.x के साथ सत्र कैसे साझा करें? मैं AngularJS में गतिशील मॉडल नाम कैसे सेट कर सकता हूं? एक पुनरावर्ती स्व-शामिल करने का सबसे आसान तरीका? मिल-डाल सिद्धांत का स्पष्टीकरण सी लाइब्रेरी फ़ंक्शन सॉर्ट करने के लिए जावास्क्रिप्ट के बारे में नई तिथि () और दिनांक.पार्स () परीक्षण अगर ईवेंट हैंडलर jQuery में एक तत्व के लिए बाध्य है सबसे ज्यादा परेशान पार्स: क्यों नहीं ए (()); काम? कैसे CPU उपयोग सी # में प्राप्त करने के लिए? वर्तमान निष्पादन विधि का नाम प्राप्त करना स्क्रॉल व्यू के अंदर गूगल मैप टुकड़ा कैसे सेट करें एक्सएचटीएमएल / सीएसएस: आंतरिक डिवाइंड को 100% चौड़ाई घटाकर दूसरे डिवा चौड़ाई कैसे बनाया जाए

जावास्क्रिप्ट में एक JSON ऑब्जेक्ट सॉर्ट करना

मैं कुछ समय के लिए इस तरह एक JSON ऑब्जेक्ट सॉर्ट करने के लिए देख रहा हूँ

{"results": [ { "layerId": 5, "layerName": "Pharmaceutical Entities", "attributes": { "OBJECTID": "35", "FACILITYTYPE": "Pharmacy", "FACILITYSUBTYPE": "24 Hr Pharmacy", "COMMERCIALNAME_E": "SADD MAARAB PHARMACY", }, "geometryType": "esriGeometryPoint", }, { "layerId": 5, "layerName": "Pharmaceutical Entities", "attributes": { "OBJECTID": "1", "FACILITYTYPE": "Pharmacy", "FACILITYSUBTYPE": "24 Hr Pharmacy", "COMMERCIALNAME_E": "GAYATHY HOSPITAL PHARMACY", }, "geometryType": "esriGeometryPoint", }, { "layerId": 5, "layerName": "Pharmaceutical Entities", "attributes": { "OBJECTID": "255", "FACILITYTYPE": "Pharmacy", "FACILITYSUBTYPE": "24 Hr Pharmacy", "COMMERCIALNAME_E": "AL DEWAN PHARMACY", }, "geometryType": "esriGeometryPoint", } ]} 

वर्णानुक्रम में प्राप्त करने के लिए "COMMERCIALNAME_E" के मूल्य के अनुसार

 {"results": [ { "layerId": 5, "layerName": "Pharmaceutical Entities", "attributes": { "OBJECTID": "255", "FACILITYTYPE": "Pharmacy", "FACILITYSUBTYPE": "24 Hr Pharmacy", "COMMERCIALNAME_E": "AL DEWAN PHARMACY", }, "geometryType": "esriGeometryPoint", }, { "layerId": 5, "layerName": "Pharmaceutical Entities", "attributes": { "OBJECTID": "1", "FACILITYTYPE": "Pharmacy", "FACILITYSUBTYPE": "24 Hr Pharmacy", "COMMERCIALNAME_E": "GAYATHY HOSPITAL PHARMACY", }, "geometryType": "esriGeometryPoint", }, { "layerId": 5, "layerName": "Pharmaceutical Entities", "attributes": { "OBJECTID": "35", "FACILITYTYPE": "Pharmacy", "FACILITYSUBTYPE": "24 Hr Pharmacy", "COMMERCIALNAME_E": "SADD MAARAB PHARMACY", }, "geometryType": "esriGeometryPoint", } ]} 

मुझे ऐसा कोई भी कोड नहीं मिल सकता है जो ऐसा करेगा। क्या कोई मुझे कुछ सहायता दे सकता है?

वेब के समाधान से एकत्रित समाधान "जावास्क्रिप्ट में एक JSON ऑब्जेक्ट सॉर्ट करना"

 function sortJsonArrayByProperty(objArray, prop, direction){ if (arguments.length<2) throw new Error("sortJsonArrayByProp requires 2 arguments"); var direct = arguments.length>2 ? arguments[2] : 1; //Default to ascending if (objArray && objArray.constructor===Array){ var propPath = (prop.constructor===Array) ? prop : prop.split("."); objArray.sort(function(a,b){ for (var p in propPath){ if (a[propPath[p]] && b[propPath[p]]){ a = a[propPath[p]]; b = b[propPath[p]]; } } // convert numeric strings to integers a = a.match(/^\d+$/) ? +a : a; b = b.match(/^\d+$/) ? +b : b; return ( (a < b) ? -1*direct : ((a > b) ? 1*direct : 0) ); }); } } sortJsonArrayByProperty(results, 'attributes.OBJECTID'); sortJsonArrayByProperty(results, 'attributes.OBJECTID', -1); 

नवीनीकृत: म्यूटेट न करें

 function sortByProperty(objArray, prop, direction){ if (arguments.length<2) throw new Error("ARRAY, AND OBJECT PROPERTY MINIMUM ARGUMENTS, OPTIONAL DIRECTION"); if (!Array.isArray(objArray)) throw new Error("FIRST ARGUMENT NOT AN ARRAY"); const clone = objArray.slice(0); const direct = arguments.length>2 ? arguments[2] : 1; //Default to ascending const propPath = (prop.constructor===Array) ? prop : prop.split("."); clone.sort(function(a,b){ for (let p in propPath){ if (a[propPath[p]] && b[propPath[p]]){ a = a[propPath[p]]; b = b[propPath[p]]; } } // convert numeric strings to integers a = a.match(/^\d+$/) ? +a : a; b = b.match(/^\d+$/) ? +b : b; return ( (a < b) ? -1*direct : ((a > b) ? 1*direct : 0) ); }); return clone; } const resultsByObjectId = sortByProperty(results, 'attributes.OBJECTID'); const resultsByObjectIdDescending = sortByProperty(results, 'attributes.OBJECTID', -1); 

पहले JSON एन्कोडेड डेटा निकालें:

 var data = eval(yourJSONString); var results = data['results']; 

फिर एक कस्टम (उपयोगकर्ता) फ़ंक्शन के साथ सॉर्ट करें:

 results.sort(function(a,b){ //return a.attributes.OBJECTID - b.attributes.OBJECTID; if(a.attributes.OBJECTID == b.attributes.OBJECTID) return 0; if(a.attributes.OBJECTID < b.attributes.OBJECTID) return -1; if(a.attributes.OBJECTID > b.attributes.OBJECTID) return 1; }); 

मैंने मान लिया था कि आप OBJECTID द्वारा सॉर्ट करना चाहते थे, लेकिन आप इसे किसी भी चीज़ से क्रमबद्ध करने के लिए बदल सकते हैं

आप सरणी के लिए एक पैरामीटर के रूप में एक कस्टम तुलना समारोह प्रदान करके किसी भी Array.Sort() को सॉर्ट कर सकते हैं।

 var myObject = /* json object from string */ ; myObject.results.sort(function (a, b) { // a and b will be two instances of your object from your list // possible return values var a1st = -1; // negative value means left item should appear first var b1st = 1; // positive value means right item should appear first var equal = 0; // zero means objects are equal // compare your object's property values and determine their order if (b.attributes.COMMERCIALNAME_E < a.attributes.COMMERCIALNAME_E) { return b1st; } else if (a.attributes.COMMERCIALNAME_E < b.attributes.COMMERCIALNAME_E) { return a1st; } else { return equal; } }); 

आप एक JSON स्ट्रिंग सॉर्ट नहीं कर सकते .. JSON डेटा परिवहन के लिए एक ऑब्जेक्ट नोटेशन है – अर्थात, एक स्ट्रिंग आपको इसे एक आशय के रूप में मूल्यांकन करना होगा (उदाहरण के लिए eval के साथ) और इसे किसी भी बदलाव को आप इसे पुनर्सिलीयर करने से पहले करना चाहिए।

स्ट्रिंग से JSON निकालें

 var data = eval(given_JSON_string); var results = data['results']; 

विधि को सॉर्ट करने के लिए एक कस्टम फ़ंक्शन पास करके सॉर्ट करें

 results.sort(customfunction); 

कस्टम फ़ंक्शन के रूप में परिभाषित किया जा सकता है

 function customfunction(a, b) { return a.attributes.COMMERCIALNAME_E < b.attributes.COMMERCIALNAME_E ? 1 : -1; 

}