मान द्वारा ऑब्जेक्ट की सॉर्ट करने के लिए लोडश का उपयोग करें


96

मैं एक सरणी को 'नाम' मान (लोडश का उपयोग करके) क्रमबद्ध करने की कोशिश कर रहा हूं। हालाँकि, नीचे दिए गए समाधान को बनाने के लिए मैंने Lodash डॉक्स का उपयोग किया है। लेकिन मुझे ऐसा बिल्कुल भी प्रभावित नहीं करता है। किसी को सरणी सॉर्ट करने के लिए सही तरीके से कुछ प्रकाश डाला जा सकता है?

चार्ट्स ऐरे

[  
   {  
      "id":25,
      "name":"Anakin Skywalker",
      "createdAt":"2017-04-12T12:48:55.000Z",
      "updatedAt":"2017-04-12T12:48:55.000Z"
   },
   {  
      "id":1,
      "name":"Luke Skywalker",
      "createdAt":"2017-04-12T11:25:03.000Z",
      "updatedAt":"2017-04-12T11:25:03.000Z"
   }
]

फ़ंक्शन कोड

 var chars = this.state.characters;

 _.orderBy(chars, 'name', 'asc'); // Use Lodash to sort array by 'name'

 this.setState({characters: chars})

जवाबों:


189

यह विधि orderByइनपुट ऐरे को नहीं बदलती है, आपको परिणाम को अपने एरे पर नियत करना होगा:

var chars = this.state.characters;

chars = _.orderBy(chars, ['name'],['asc']); // Use Lodash to sort array by 'name'

 this.setState({characters: chars})

हम्म, अभी भी सरणी छँटाई करने के लिए प्रतीत नहीं होता है। यकीन नहीं होता कि मुझे सवाल अपडेट करना चाहिए या एक नया बनाना चाहिए

1
उत्तर अपडेट किया, हो सकता है कि आपकी त्रुटि एक सरणी के बजाय दो मापदंडों को पारित करने के कारण हो'name', 'asc'
Artémis Young

1
" orderByइनपुट एरे को नहीं बदलता" ... " orderByएरे को जगह में बदलता है।" इरादा शब्दांकन शायद "नहीं-में-जगह" या "आउट-ऑफ-प्लेस" है। देखें: en.wikipedia.org/wiki/In-place_algorithm
Dem Pilafian

वास्तव में आप सही कह रहे हैं, मैंने अभी इस वाक्य को हटा दिया है क्योंकि इसने जवाब में कुछ नहीं जोड़ा है
आर्टेमिस यंग

यह दूसरा पैरामीटर ['asc']आरोही क्रम नहीं करता है, यह हासिल करने के लिए कि रास्ता एक के reverse()बाद जोड़ना होगा orderBy(कम से कम 4.17.15 संस्करण में)
डिएगो ओर्टिज़

58

आप लॉश सॉर्टबाय ( https://lodash.com/docs/4.17.4#sortBy ) का उपयोग कर सकते हैं ।

आपका कोड इस तरह हो सकता है:

const myArray = [  
   {  
      "id":25,
      "name":"Anakin Skywalker",
      "createdAt":"2017-04-12T12:48:55.000Z",
      "updatedAt":"2017-04-12T12:48:55.000Z"
   },
   {  
      "id":1,
      "name":"Luke Skywalker",
      "createdAt":"2017-04-12T11:25:03.000Z",
      "updatedAt":"2017-04-12T11:25:03.000Z"
   }
]

const myOrderedArray = _.sortBy(myArray, o => o.name)

32
आप शॉर्टहैंड का भी उपयोग कर सकते हैं:_.sortBy(myArray, 'name')
डॉन

5
की तुलना में orderBy, आप सॉर्ट प्रकार नहीं पास कर सकते हैं sortBy, यह हमेशा आरोही क्रम से सॉर्ट करता है।
a_rahmanshah
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.