दिलचस्प पोस्ट
कैसे लाइन समापन रूपांतरण जीआईटी कोर के साथ काम करते हैं। विभिन्न ऑपरेटिंग सिस्टम के बीच सीखना नियमित अभिव्यक्ति <F: मेटाडाटा>, <f: viewParam> और <f: viewAction> के लिए क्या इस्तेमाल किया जा सकता है? गिट रिपॉजिटरी में किसी विशिष्ट लेखक द्वारा लिखित कुल लाइनों की गणना कैसे करें? सी # कन्स्ट्रक्टर चेनिंग? (यह कैसे करना है?) मेरी संरचनाएं जेसन में मार्शलिंग नहीं कर रही हैं एकाधिक पाठ फ़ाइलों को एक RDD में कैसे पढ़ा जाए? पीडीओ में लगातार कनेक्शन का उपयोग करने के क्या नुकसान हैं फ़ायरबसे ऑफ़लाइन क्षमताएं और ऐडलिस्टनरफोरसिंलिंगवैल्यूइवेंट MySQL इंजेक्शन और क्रॉस साइट स्क्रिप्टिंग से बचाव करने का सर्वोत्तम तरीका एक निश्चित समय के बाद कमांड लाइन को स्वतः-मारने के लिए कमांड लाइन कमांड सी # में स्ट्रिंग एक संदर्भ प्रकार है जो मूल्य प्रकार की तरह व्यवहार करता है? आपको जेफ्राम और अन्य घटकों का विस्तार क्यों नहीं करना चाहिए? क्या एक जावा सरणी को हैशमैप कुंजी के रूप में इस्तेमाल किया जा सकता है क्रिकइन्फो स्कोरकार्ड की html पार्सिंग

संपत्ति मूल्य द्वारा जावास्क्रिप्ट ऑब्जेक्ट सॉर्ट करना

अगर मेरे पास जावास्क्रिप्ट वस्तु है जैसे कि:

var list = { "you": 100, "me": 75, "foo": 116, "bar": 15 }; 

मूल्य के आधार पर गुणों को हल करने का कोई तरीका है? इसलिए कि मैं अंत के साथ समाप्त

 list = { "bar": 15, "me": 75, "you": 100, "foo": 116 }; 

मैं इस बारे में एक वास्तविक मस्तिष्क-मृत पल रहा हूँ

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

उन्हें सरणी में ले जाएं, उस सरणी को सॉर्ट करें, और फिर अपने उद्देश्यों के लिए उस सरणी का उपयोग करें।

यहां एक उपाय है जिसे मैंने Google के माध्यम से पाया है :

 var maxSpeed = { car: 300, bike: 60, motorbike: 200, airplane: 1000, helicopter: 400, rocket: 8 * 60 * 60 }; var sortable = []; for (var vehicle in maxSpeed) { sortable.push([vehicle, maxSpeed[vehicle]]); } sortable.sort(function(a, b) { return a[1] - b[1]; }); //[["bike", 60], ["motorbike", 200], ["car", 300], //["helicopter", 400], ["airplane", 1000], ["rocket", 28800]] 

एक बार आपके पास सरणी है, तो आप ऑर्डर से ऑब्जेक्ट को उस क्रम में फिर से बनाया जा सकता है, जो आप पसंद करते हैं, इस प्रकार आप जो भी करना चाहते हैं वही प्राप्त कर सकते हैं। यह सभी ब्राउज़रों में मैं काम करता हूं, लेकिन यह एक क्रियान्वयन के आधार पर निर्भर होता है, और किसी भी समय इसे तोड़ सकता है। आपको जावास्क्रिप्ट ऑब्जेक्ट में तत्वों के क्रम के बारे में धारणाएं कभी नहीं करना चाहिए।

हम पूरे डेटा संरचना को डुप्लिकेट नहीं करना चाहते हैं, या एक सरणी का उपयोग करते हैं जहां हमें एक साहचर्य सरणी की आवश्यकता होती है।

बोनसा की तरह एक ही काम करने का एक और तरीका है:

 var list = {"you": 100, "me": 75, "foo": 116, "bar": 15}; keysSorted = Object.keys(list).sort(function(a,b){return list[a]-list[b]}) alert(keysSorted); // bar,me,you,foo 

आपके ऑब्जेक्ट में कोई भी गुण हो सकते हैं और यदि आप वस्तुओं को किसी सरणी में डालते हैं, तो आप जो वस्तु वस्तु चाहते हैं, संख्या या स्ट्रिंग के आधार पर सॉर्ट करना चुन सकते हैं। इस सरणी पर विचार करें:

 var arrayOfObjects = [ { name: 'Diana', born: 1373925600000, // Mon, Jul 15 2013 num: 4, sex: 'female' }, { name: 'Beyonce', born: 1366832953000, // Wed, Apr 24 2013 num: 2, sex: 'female' }, { name: 'Albert', born: 1370288700000, // Mon, Jun 3 2013 num: 3, sex: 'male' }, { name: 'Doris', born: 1354412087000, // Sat, Dec 1 2012 num: 1, sex: 'female' } ]; 

जन्मतिथि दिनांक के अनुसार, सबसे पुराना पहले

 // use slice() to copy the array and not just make a reference var byDate = arrayOfObjects.slice(0); byDate.sort(function(a,b) { return a.born - b.born; }); console.log('by date:'); console.log(byDate); 

नाम द्वारा क्रमबद्ध करें

 var byName = arrayOfObjects.slice(0); byName.sort(function(a,b) { var x = a.name.toLowerCase(); var y = b.name.toLowerCase(); return x < y ? -1 : x > y ? 1 : 0; }); console.log('by name:'); console.log(byName); 

http://jsfiddle.net/xsM5s/16/

पूर्णता के लिए, यह फ़ंक्शन ऑब्जेक्ट गुणों की क्रमबद्ध सरणी देता है:

 function sortObject(obj) { var arr = []; for (var prop in obj) { if (obj.hasOwnProperty(prop)) { arr.push({ 'key': prop, 'value': obj[prop] }); } } arr.sort(function(a, b) { return a.value - b.value; }); //arr.sort(function(a, b) { a.value.toLowerCase().localeCompare(b.value.toLowerCase()); }); //use this to sort as strings return arr; // returns array } var list = {"you": 100, "me": 75, "foo": 116, "bar": 15}; var arr = sortObject(list); console.log(arr); // [{key:"bar", value:15}, {key:"me", value:75}, {key:"you", value:100}, {key:"foo", value:116}] 

ऊपर दिए गए कोड के साथ Jsfiddle यहाँ है यह समाधान इस लेख पर आधारित है।

सॉर्टिंग स्ट्रिंग के लिए बेस्ट अपडेट यहां है आप मामले से संवेदनशील स्ट्रिंग तुलना के लिए इसके अतिरिक्त .toLowerCase () रूपांतरणों को हटा सकते हैं।

जावास्क्रिप्ट ऑब्जेक्ट्स परिभाषा से अनारक्षित हैं (देखें ECMAScript भाषा विशिष्टता , खंड 8.6)। भाषा विनिर्देश यह भी गारंटी नहीं देता कि, यदि आप किसी ऑब्जेक्ट के दोबारा उत्तराधिकार में दोबारा पुनरावृति करते हैं, तो वे उसी क्रम में दूसरी बार बाहर आ जाते हैं।

यदि आपको आदेश दिए जाने के लिए चीजों की आवश्यकता है, तो एक सरणी और Array.prototype.sort विधि का उपयोग करें।

संदर्भ के लिए @ marcusR का एक "तीर" संस्करण

 var myObj = {"you": 100, "me": 75, "foo": 116, "bar": 15}; keysSorted = Object.keys(myObj).sort((a,b) => myObj[a]-myObj[b]) alert(keysSorted); // bar,me,you,foo 

myObj अप्रैल 2017 को संपादित करें – यह ऊपर myObj एक ऑब्जेक्ट ऑब्जेक्ट ऑब्जेक्ट देता है।

 Object .keys(myObj) .sort((a, b) => myObj[a]-myObj[b]) .reduce((_sortedObj, key) => ({ ..._sortedObj, [key]: myObj[key] }), {}) 

इसे यहाँ की कोशिश करो!

ठीक है , जैसा कि आप जानते हैं, जावास्क्रिप्ट सॉर्ट करने के लिए सॉर्ट () फ़ंक्शन है, एरे सॉर्ट करने के लिए, लेकिन वस्तु के लिए कुछ नहीं …

तो उस मामले में, हमें किसी भी तरह की चाबियाँ मिलनी चाहिए और उन्हें सॉर्ट करना होगा, क्योंकि एपीआई आपको अधिकतर समय में सरणी में ऑब्जेक्ट देता है, क्योंकि अर्रे में उनके साथ खेलने के लिए और अधिक देशी फ़ंक्शन हैं, वैसे भी, त्वरित समाधान Object.key का उपयोग कर रहा है जो ऑब्जेक्ट की सरणी को वापस करता है, मैं नीचे ES6 फ़ंक्शन का निर्माण करता हूं जो आपके लिए काम करता है, यह मूल सॉर्ट () का उपयोग करता है और जावास्क्रिप्ट में () कार्यों को कम करता है:

 function sortObject(obj) { return Object.keys(obj) .sort().reduce((a, v) => { a[v] = obj[v]; return a; }, {}); } 

और अब आप इसे इस तरह प्रयोग कर सकते हैं:

 let myObject = {a: 1, c: 3, e: 5, b: 2, d: 4}; let sortedMyObject = sortObject(myObject); 

सॉर्ट किए गए MyObject की जांच करें और आप इस तरह की चाबियाँ द्वारा सॉर्ट किए गए परिणाम देख सकते हैं:

 {a: 1, b: 2, c: 3, d: 4, e: 5} 

इसके अलावा, मुख्य वस्तु को छुआ नहीं जाएगा और हम वास्तव में एक नई वस्तु प्राप्त कर रहे हैं।

फ़ंक्शन चरण को और अधिक स्पष्ट बनाने के लिए, मैं नीचे दी गई छवि भी बनाऊँगा, अगर आपको इसे अपने तरीके से काम करने के लिए थोड़ा बदलना होगा:

संपत्ति मूल्य से एक जावास्क्रिप्ट ऑब्जेक्ट को छंटनी

उन्नत सरणी या ऑब्जेक्ट प्रकार के लिए अंडरस्कोर जेएस या लोडाश। जेएस

  var data={ "models": { "LTI": [ "TX" ], "Carado": [ "A", "T", "A(пасс)", "A(груз)", "T(пасс)", "T(груз)", "A", "T" ], "SPARK": [ "SP110C 2", "sp150r 18" ], "Autobianchi": [ "A112" ] } }; var arr=[], obj={}; for(var i in data.models){ arr.push([i, _.sortBy(data.models[i],function (el){return el;})]); } arr=_.sortBy(arr,function (el){ return el[0]; }); _.map(arr,function (el){return obj[el[0]]=el[1];}); console.log(obj); 

डेमो

ECMAScript 2017 में Object.values / Object.entries परिचय Object.values / Object.entries । जैसा कि नाम से पता चलता है, पूर्व किसी ऑब्जेक्ट के सभी मानों को एक सरणी में जोड़ता है, और बाद में पूरे ऑब्जेक्ट को [key, value] arrays की एक सरणी में करता है; पायथन के बराबर dict.values() और dict.items()

सुविधाओं ने किसी भी हश को क्रमबद्ध ऑब्जेक्ट में सॉर्ट करने के लिए बहुत आसान बना दिया है। अब तक, जावास्क्रिप्ट प्लैटफॉर्म का केवल एक छोटा सा हिस्सा उनका समर्थन करता है , लेकिन आप इसे फ़ायरफ़ॉक्स 47+ पर आज़मा सकते हैं।

 let obj = {"you": 100, "me": 75, "foo": 116, "bar": 15}; let entries = Object.entries(obj); // [["you",100],["me",75],["foo",116],["bar",15]] let sorted = entries.sort((a, b) => a[1] - b[1]); // [["bar",15],["me",75],["you",100],["foo",116]] 

मैं स्ल्बेटमैन द्वारा दिए गए समाधान का पालन कर रहा हूं (सभी विवरणों के लिए इसे पढ़ें), लेकिन समायोजित, चूंकि आपकी ऑब्जेक्ट गैर-नेस्टेड है

 // First create the array of keys/values so that we can sort it: var sort_array = []; for (var key in list) { sort_array.push({key:key,value:list[key]}); } // Now sort it: sort_array.sort(function(x,y){return x.value - y.value}); // Now process that object with it: for (var i=0;i<sort_array.length;i++) { var item = list[sort_array[i].key]; // now do stuff with each item } 

ES6 के साथ अपडेट: यदि आपकी चिंता के माध्यम से पुनरावृत्त करने के लिए सॉर्ट किया गया ऑब्जेक्ट है (इसलिए मैं कल्पना करता हूं कि आप अपना ऑब्जेक्ट गुण सॉर्ट करना चाहते हैं), तो आप मानचित्र ऑब्जेक्ट का उपयोग कर सकते हैं।

आप क्रमबद्ध क्रम में अपनी (कुंजी, मान) जोड़े जोड़ सकते हैं और फिर लूप के लिए ऐसा करने की गारंटी देकर उन्हें लूप होने के लिए गारंटी दी जाएगी।

 var myMap = new Map(); myMap.set(0, "zero"); myMap.set(1, "one"); for (var [key, value] of myMap) { console.log(key + " = " + value); } // 0 = zero // 1 = one 
 var list = { "you": 100, "me": 75, "foo": 116, "bar": 15 }; function sortAssocObject(list) { var sortable = []; for (var key in list) { sortable.push([key, list[key]]); } sortable.sort(function(a, b) { return (a[1] < b[1] ? -1 : (a[1] > b[1] ? 1 : 0)); }); var orderedList = {}; for (var i = 0; i < sortable.length; i++) { orderedList[sortable[i][0]] = sortable[i][1]; } return orderedList; } sortAssocObject(list); // {bar: 15, me: 75, you: 100, foo: 116} 

यह एक वास्तविक आदेशित ऑब्जेक्ट के रूप में इसे संभालने का एक आसान तरीका हो सकता है। निश्चित नहीं है कि यह कितनी धीमी है यह भी थोड़ी देर लूप के साथ बेहतर हो सकता है

 Object.sortByKeys = function(myObj){ var keys = Object.keys(myObj) keys.sort() var sortedObject = Object() for(i in keys){ key = keys[i] sortedObject[key]=myObj[key] } return sortedObject } 

और फिर मुझे ये इन्व्हर्ट फ़ंक्शन से पाया गया: http://nelsonwells.net/2011/10/swap-object-key-and-values-in-javascript/

 Object.invert = function (obj) { var new_obj = {}; for (var prop in obj) { if(obj.hasOwnProperty(prop)) { new_obj[obj[prop]] = prop; } } return new_obj; }; 

इसलिए

 var list = {"you": 100, "me": 75, "foo": 116, "bar": 15}; var invertedList = Object.invert(list) var invertedOrderedList = Object.sortByKeys(invertedList) var orderedList = Object.invert(invertedOrderedList) 

यहाँ एक और उदाहरण है:

 function sortObject(obj) { var arr = []; var prop; for (prop in obj) { if (obj.hasOwnProperty(prop)) { arr.push({ 'key': prop, 'value': obj[prop] }); } } arr.sort(function(a, b) { return a.value - b.value; }); return arr; // returns array } var list = { car: 300, bike: 60, motorbike: 200, airplane: 1000, helicopter: 400, rocket: 8 * 60 * 60 }; var arr = sortObject(list); console.log(arr); 

कई समान और उपयोगी फ़ंक्शन: https://github.com/shimondoodkin/groupbyfunctions/

 function sortobj(obj) { var keys=Object.keys(obj); var kva= keys.map(function(k,i) { return [k,obj[k]]; }); kva.sort(function(a,b){ if(a[1]>b[1]) return -1;if(a[1]<b[1]) return 1; return 0 }); var o={} kva.forEach(function(a){ o[a[0]]=a[1]}) return o; } function sortobjkey(obj,key) { var keys=Object.keys(obj); var kva= keys.map(function(k,i) { return [k,obj[k]]; }); kva.sort(function(a,b){ k=key; if(a[1][k]>b[1][k]) return -1;if(a[1][k]<b[1][k]) return 1; return 0 }); var o={} kva.forEach(function(a){ o[a[0]]=a[1]}) return o; } 

इसे इस्तेमाल करे

  var speed = { car: 300, bike: 60, motorbike: 200, airplane: 1000, helicopter: 400, rocket: 8 * 60 * 60 }; var sortable = []; for (var vehicle in speed) { sortable.push([vehicle, speed[vehicle]]); } sortable.sort(function(a, b) { return a[1] - b[1]; }); 

इसका समाधान करने का दूसरा तरीका: –

 var res = [{"s1":5},{"s2":3},{"s3":8}].sort(function(obj1,obj2){ var prop1; var prop2; for(prop in obj1) { prop1=prop; } for(prop in obj2) { prop2=prop; } //the above two for loops will iterate only once because we use it to find the key return obj1[prop1]-obj2[prop2]; }); 

// Res का परिणाम सरणी होगा

धन्यवाद और उत्तर जारी @ नोरेडेना

अब जब हम समझते हैं कि ऑब्जेक्ट को सरणी में कनवर्ट करना है तो सरणी को सॉर्ट करना होगा। यह स्ट्रिंग द्वारा सरणी क्रमबद्ध करने के लिए उपयोगी है (या ऑर्गेड में कनवर्ट ऑब्जेक्ट):

 Object {6: Object, 7: Object, 8: Object, 9: Object, 10: Object, 11: Object, 12: Object} 6: Object id: "6" name: "PhD" obe_service_type_id: "2" __proto__: Object 7: Object id: "7" name: "BVC (BPTC)" obe_service_type_id: "2" __proto__: Object //Sort options var sortable = []; for (var vehicle in options) sortable.push([vehicle, options[vehicle]]); sortable.sort(function(a, b) { return a[1].name < b[1].name ? -1 : 1; }); //sortable => prints [Array[2], Array[2], Array[2], Array[2], Array[2], Array[2], Array[2]] 0: Array[2] 0: "11" 1: Object id: "11" name: "AS/A2" obe_service_type_id: "2" __proto__: Object length: 2 __proto__: Array[0] 1: Array[2] 0: "7" 1: Object id: "7" name: "BVC (BPTC)" obe_service_type_id: "2" __proto__: Object length: 2 

इसे इस्तेमाल करे। यहां तक ​​कि आपके ऑब्जेक्ट की संपत्ति नहीं है, जिस पर आप सॉर्ट करने का प्रयास कर रहे हैं, उसे भी संभाला जाएगा।

बस वस्तु के साथ संपत्ति भेजने के द्वारा इसे कहते हैं।

 var sortObjectByProperty = function(property,object){ console.time("Sorting"); var sortedList = []; emptyProperty = []; tempObject = []; nullProperty = []; $.each(object,function(index,entry){ if(entry.hasOwnProperty(property)){ var propertyValue = entry[property]; if(propertyValue!="" && propertyValue!=null){ sortedList.push({key:propertyValue.toLowerCase().trim(),value:entry}); }else{ emptyProperty.push(entry); } }else{ nullProperty.push(entry); } }); sortedList.sort(function(a,b){ return a.key < b.key ? -1 : 1; //return a.key < b.key?-1:1; // Asc //return a.key < b.key?1:-1; // Desc }); $.each(sortedList,function(key,entry){ tempObject[tempObject.length] = entry.value; }); if(emptyProperty.length>0){ tempObject.concat(emptyProperty); } if(nullProperty.length>0){ tempObject.concat(nullProperty); } console.timeEnd("Sorting"); return tempObject; } 

मैंने इसके लिए एक प्लगइन बना लिया है, यह 1 अर्ग को स्वीकार करता है जो एक बिना क्रमबद्ध ऑब्जेक्ट है, और एक ऑब्जेक्ट देता है जिसे प्रोप वैल्यू द्वारा सॉर्ट किया गया है। यह सभी 2 आयामी वस्तुओं जैसे {"Nick": 28, "Bob": 52}

 var sloppyObj = { 'C': 78, 'A': 3, 'B': 4 }; // Extend object to support sort method function sortObj(obj) { "use strict"; function Obj2Array(obj) { var newObj = []; for (var key in obj) { if (!obj.hasOwnProperty(key)) return; var value = [key, obj[key]]; newObj.push(value); } return newObj; } var sortedArray = Obj2Array(obj).sort(function(a, b) { if (a[1] < b[1]) return -1; if (a[1] > b[1]) return 1; return 0; }); function recreateSortedObject(targ) { var sortedObj = {}; for (var i = 0; i < targ.length; i++) { sortedObj[targ[i][0]] = targ[i][1]; } return sortedObj; } return recreateSortedObject(sortedArray); } var sortedObj = sortObj(sloppyObj); alert(JSON.stringify(sortedObj)); 

यहां अपेक्षित काम के रूप में कार्य का एक डेमो है: http://codepen.io/nicholasabrams/pen/RWRqve?editors=001

क्वेरी-जे एस का उपयोग करके आप इसे इस तरह से कर सकते हैं

 list.keys().select(function(k){ return { key: k, value : list[k] } }).orderBy(function(e){ return e.value;}); 

आप क्वेरी-जे एस पर परिचयात्मक लेख यहां पा सकते हैं

ऊपर जवाब प्राप्त न करें जो काम करे और छोटा हो , और नेस्टेड ऑब्जेक्ट्स (सरणियों के लिए) का समर्थन नहीं किया, इसलिए मैंने अपना एक लिखा: 🙂 स्ट्रिंग्स और इनट्स दोनों के साथ काम करता है।

  function sortObjectProperties(obj, sortValue){ var keysSorted = Object.keys(obj).sort(function(a,b){return obj[a][sortValue]-obj[b][sortValue]}); var objSorted = {}; for(var i = 0; i < keysSorted.length; i++){ objSorted[keysSorted[i]] = obj[keysSorted[i]]; } return objSorted; } 

उपयोग:

  /* sample object with unsorder properties, that we want to sort by their "customValue" property */ var objUnsorted = { prop1 : { customValue : 'ZZ' }, prop2 : { customValue : 'AA' } } // call the function, passing object and property with it should be sorted out var objSorted = sortObjectProperties(objUnsorted, 'customValue'); // now console.log(objSorted) will return: { prop2 : { customValue : 'AA' }, prop1 : { customValue : 'ZZ' } } 

यहां ऑब्जेक्ट सॉर्ट करने और सॉर्टेड ऑब्जेक्ट बदले में प्राप्त करने का तरीका है

 let sortedObject = {} sortedObject = Object.keys(yourObject).sort((a, b) => { return yourObject[a] - yourObject[b] }).reduce((prev, curr, i) => { prev[i] = yourObject[curr] return prev }, {}); 

आप अपनी आवश्यकता के अनुसार अपने सॉर्टिंग फ़ंक्शन को कस्टमाइज़ कर सकते हैं