मेरे पास एक सरणी है:
arr = []
arr[0] = "ab"
arr[1] = "abcdefgh"
arr[2] = "abcd"
छँटाई के बाद, उत्पादन सरणी होनी चाहिए:
arr[0] = "abcdefgh"
arr[1] = "abcd"
arr[2] = "ab"
मेरा मतलब है, मैं प्रत्येक तत्व की लंबाई के अवरोही क्रम में चाहता हूं।
मेरे पास एक सरणी है:
arr = []
arr[0] = "ab"
arr[1] = "abcdefgh"
arr[2] = "abcd"
छँटाई के बाद, उत्पादन सरणी होनी चाहिए:
arr[0] = "abcdefgh"
arr[1] = "abcd"
arr[2] = "ab"
मेरा मतलब है, मैं प्रत्येक तत्व की लंबाई के अवरोही क्रम में चाहता हूं।
जवाबों:
आप Array.sort
सरणी को सॉर्ट करने के लिए विधि का उपयोग कर सकते हैं । एक छँटाई फ़ंक्शन जो स्ट्रिंग की लंबाई को मानती है जैसे छँटाई मानदंड का उपयोग निम्नानुसार किया जा सकता है:
arr.sort(function(a, b){
// ASC -> a.length - b.length
// DESC -> b.length - a.length
return b.length - a.length;
});
नोट: ["a", "b", "c"]
स्ट्रिंग की लंबाई द्वारा छंटनी की वापसी की गारंटी नहीं है ["a", "b", "c"]
। चश्मा के अनुसार :
सॉर्ट आवश्यक रूप से स्थिर नहीं है (अर्थात, समान तुलना करने वाले तत्व आवश्यक रूप से अपने मूल क्रम में नहीं रहते हैं)।
यदि उद्देश्य लंबाई द्वारा क्रमबद्ध करना है तो शब्दकोश क्रम से आपको अतिरिक्त मानदंड निर्दिष्ट करने होंगे:
["c", "a", "b"].sort(function(a, b) {
return a.length - b.length || // sort by length, if equal then
a.localeCompare(b); // sort by dictionary order
});
arr.sort((a, b) => b.length - a.length)
हम इस सरणी को सॉर्ट करने के लिए Array.sort विधि का उपयोग कर सकते हैं ।
var array = ["ab", "abcdefgh", "abcd"];
array.sort(function(a, b){return b.length - a.length});
console.log(JSON.stringify(array, null, '\t'));
के लिए आरोही क्रम:
a.length - b.length
के लिए उतरते सॉर्ट क्रम:
b.length - a.length
ध्यान दें: सभी ब्राउज़र ES6 कोड को नहीं समझ सकते हैं!
ES6 में हम एरो फंक्शन एक्सप्रेशन का उपयोग कर सकते हैं ।
let array = ["ab", "abcdefgh", "abcd"];
array.sort((a, b) => b.length - a.length);
console.log(JSON.stringify(array, null, '\t'));
यहाँ एक तरह से जावास्क्रिप्ट के साथ एक स्ट्रिंग की लंबाई पर निर्भर करता है, जैसा कि आपने पूछा:
[बबल सॉर्ट द्वारा समस्या का हल] [१]
[१]: http://jsfiddle.net/sssonline2/vcme3/2/enter code here
सलमान के जवाब के आधार पर, मैंने इसे एनकैप्सुलेट करने के लिए एक छोटा सा कार्य लिखा है:
function sortArrayByLength(arr, ascYN) {
arr.sort(function (a, b) { // sort array by length of text
if (ascYN) return a.length - b.length; // ASC -> a - b
else return b.length - a.length; // DESC -> b - a
});
}
तो बस इसके साथ बुलाओ
sortArrayByLength( myArray, true );
ध्यान दें कि दुर्भाग्यवश, इस पृष्ठ पर बताए अनुसार, फ़ंक्शन को Array प्रोटोटाइप में नहीं जोड़ा जा सकता है / नहीं होना चाहिए ।
इसके अलावा, यह एक पैरामीटर के रूप में पारित सरणी को संशोधित करता है और कुछ भी वापस नहीं करता है। यह सरणी के दोहराव को मजबूर करेगा और बड़े सरणियों के लिए महान नहीं होगा। अगर किसी के पास एक बेहतर विचार है, तो कृपया टिप्पणी करें!
मैंने इसे संक्षिप्त बनाने के लिए @ श्रीफल के उत्तर को अनुकूलित किया। मैं उपयोग करता हूं,
.sort(function(arg1, arg2) { return arg1.length - arg2.length })
#created a sorting function to sort by length of elements of list
def sort_len(a):
num = len(a)
d = {}
i = 0
while i<num:
d[i] = len(a[i])
i += 1
b = list(d.values())
b.sort()
c = []
for i in b:
for j in range(num):
if j in list(d.keys()):
if d[j] == i:
c.append(a[j])
d.pop(j)
return c
<script>
arr = []
arr[0] = "ab"
arr[1] = "abcdefgh"
arr[2] = "sdfds"
arr.sort(function(a,b){
return a.length<b.length
})
document.write(arr)
</script>
अनाम फ़ंक्शन जिसे आप सॉर्ट करना चाहते हैं, यह बताता है कि दिए गए एरे को कैसे सॉर्ट करना है। इससे मदद मिलती है। मुझे पता है कि यह भ्रामक है लेकिन आप सॉर्ट फ़ंक्शन को यह बता सकते हैं कि ऐरे के तत्वों को कैसे सॉर्ट करना है, इसे फंक्शन को पैरामीटर के रूप में बताएं यह क्या करना है
sort
बहुत सीधा आगे है, आपको कठिनाई कहाँ हो रही है?