2013-04-27 7 views
9
var sorted = words.map(function(value) { 
    return value.toLowerCase(); 
}).sort(); 

इस कोड को छोटे अक्षरों में शब्द सरणी से सभी मूल्यों लौट आते हैं और उन्हें क्रमबद्ध करता लिए उपयोग कर छोटे अक्षरों में सरणी से सभी मूल्यों लौटें, लेकिन मैं एक for पाश के साथ भी ऐसा ही करना चाहते हैं, लेकिन मैं नहीं कर सकता।बजाय पाश नक्शा

मैंने कोशिश की:

for (var i = 0; i < words.length; i++) { 
    sorted = []; 
    sorted.push(words[i].toLowerCase()); 
}; 
+2

भविष्य के संदर्भ के लिए एक सुझाव: जब आप किसी एक उत्तर के परिणामस्वरूप कोड में कोड अपडेट करते हैं, तो कृपया मूल (गलत) कोड संपादित न करें। इसके बजाय, उस मूल कोड को अपरिवर्तित रखें और प्रश्न के अंत में एक नया अनुभाग जोड़ें, "मैंने XYZ के उत्तर में सुझाए गए कोड को संशोधित किया है, लेकिन यह अभी भी काम नहीं करता है। नया कोड यहां है: ..." इस तरह प्रश्न और उत्तर भविष्य के आगंतुकों के लिए अधिक समझदारी बनाएंगे। –

+1

सच है, मैं करूँगा। धन्यवाद। –

उत्तर

7

, += ऑपरेटर आप क्या उम्मीद भी नहीं करता है - यह सरणी पर .toString बुलाता है और उन्हें संयोजित करता। इसके बजाय, आप array push method:

var sorted = []; 
for (var i = 0; i < words.length; i++) { 
    sorted.push(words[i].toLowerCase()); 
} 
sorted.sort(); 
+0

मैंने कोड को थोड़ा सा अपडेट किया है (कृपया देखें), लेकिन अब यह केवल 1 तत्व लौटाता है, न कि उनमें से सभी। –

+2

आपके पास 'sorted = [];' लूप के अंदर है - जहां यह बार-बार एक नए के साथ सरणी को ओवरराइट करता है (और अंतिम आइटम के साथ केवल आखिरी वाला, वापस किया जाएगा)। कोड को कैसे देखना चाहिए इसके लिए मेरा उत्तर देखें। – Bergi

+0

हाँ, मैंने आपके कोड और मेरा तुलना की और महसूस किया कि समस्या थी। धन्यवाद! –

0

toLowerCase() समारोह है, तो आप () लिखना चाहिए के बाद यह

+0

बेवकूफ गलती। अभी भी काम नहीं कर रहा है हालांकि –

0

toLowerCase विधि अपने कोड में बुलाया जा रहा है नहीं है, केवल संदर्भित किया है। लूप में अपनी लाइन को बदलें:

sorted += words[i].toLowerCase(); 

विधि को कॉल करने के लिए() जोड़ें।

पूरा काम कर कोड:

var words = ["FOO", "BAR"]; 
var sorted = []; 

for (var i = 0; i < words.length; i++) { 

     sorted.push(words[i].toLowerCase()); 
}; 

console.log(sorted); 
0

मैं तुम्हें एक सरणी के रूप में sorted घोषणा कर रहे संभालने हूँ। यदि ऐसा है तो += बजाय push विधि का उपयोग करें: सरणियों के साथ

for (var i = 0; i < words.length; i++) { 
    sorted.push(words[i].toLowerCase()); 
} 
30

पुश का उपयोग करना चाहते हैं।

for (var i = 0, L=words.length ; i < L; i++) { 
    sorted[i]=words[i].toLowerCase(); 
} 

आप तेजी चाहते हैं और शब्दों की एक बहुत बड़ी सरणी है, तो एक बार

sorted=words.join('|').toLowerCase().split('|'); 
+3

+ दूसरे के लिए – ZuzEL

+0

अच्छी चाल में शामिल हों – Martial

1

मैं जानता हूँ कि यह एक बाद में जवाब है toLowerCase फोन, लेकिन मैं एक तरह से बहुत सीधा और आसान मिल गया!

yourArray = ['this', 'iS an', 'arrAy']; 
console.log(yourArray); // ["this", "iS an", "arrAy"] 

yourLowerArray = yourArray.toLocaleString().toLowerCase().split(','); 
console.log(yourLowerArray); //["this", "is an", "array"] 

की व्याख्या यह है कि क्या करता है:

.toLocaleString() -> एक स्ट्रिंग अल्पविराम के द्वारा अलग में सरणी को बदलने।

.toLowercase() -> उस स्ट्रिंग को कम मामले में कनवर्ट करें।

.split(',') -> स्ट्रिंग को कम मामले में वापस सरणी में कनवर्ट करें।

उम्मीद है कि यह आपकी मदद करता है!

11

तुम भी अब यह बहुत ही बस एक तीर समारोह और सरणी की map() विधि का उपयोग कर प्राप्त कर सकते हैं:

var words = ['Foo','Bar','Fizz','Buzz']; 
 
words = words.map(v => v.toLowerCase()); 
 

 
console.log(words);

ध्यान दें कि यह केवल ब्राउज़र जो ES2015 समर्थन में काम करेंगे। दूसरे शब्दों में, आईई 8 और उससे कम को छोड़कर कुछ भी।