मुझे हमेशा आश्चर्य होता है कि उनके बीच क्या अंतर था। वे सभी एक ही काम करने लगते हैं ...
मुझे हमेशा आश्चर्य होता है कि उनके बीच क्या अंतर था। वे सभी एक ही काम करने लगते हैं ...
जवाबों:
अंतर वापसी मूल्यों में है।
.map()
मूल आइटम पर कुछ कार्रवाई करके बनाई गई वस्तुओं की एक नई सरणी लौटाता है ।
.every()
एक बूलियन लौटाता है - सच है अगर इस सरणी में प्रत्येक तत्व प्रदान किए गए परीक्षण फ़ंक्शन को संतुष्ट करता है। इसके साथ एक महत्वपूर्ण अंतर .every()
यह है कि परीक्षण फ़ंक्शन को हमेशा सरणी में प्रत्येक तत्व के लिए नहीं बुलाया जा सकता है। एक बार परीक्षण फ़ंक्शन किसी भी तत्व के लिए गलत हो जाता है, कोई और सरणी तत्व पुनरावृत्त नहीं होते हैं। इसलिए, परीक्षण फ़ंक्शन का आमतौर पर कोई दुष्प्रभाव नहीं होना चाहिए ।
.forEach()
कुछ भी नहीं लौटाता है - यह ऐरे में प्रत्येक आइटम के लिए दिए गए एक्शन को करने वाले एरे को पुनरावृत्त करता है।
MDN पर इन और कई अन्य ऐरे पुनरावृति विधियों के बारे में पढ़ें ।
gilly3 का जवाब बहुत अच्छा है। मैं बस "तत्वों के माध्यम से" कार्यों के अन्य प्रकारों के बारे में थोड़ी जानकारी जोड़ना चाहता था।
.every()
(पहली बार जब पुनरावृत्तिकर्ता गलत या कुछ गलत लिखता है तो लूप बंद कर देता है).some()
(पहली बार जब पुनरावृत्ति सही या कुछ सत्य हो जाता है तो लूप बंद हो जाता है).filter()
(उन तत्वों को शामिल करता है, जिनमें फिल्टर फ़ंक्शन सही होता है और जहां यह गलत होता है, उन्हें छोड़ते हुए एक नया सरणी बनाता है).map()
(पुनरावृति फ़ंक्शन द्वारा दिए गए मानों से एक नया सरणी बनाता है).reduce()
(पुनरावृत्ति को दोहराकर, पिछले मानों में पास करके एक मान बनाता है; विवरण के लिए युक्ति देखें; एक सरणी की सामग्री और कई अन्य चीजों के लिए उपयोगी है).reduceRight()
(जैसे घटते हैं, लेकिन आरोही क्रम के बजाय अवरोही में काम करते हैं)श्रेय: TJCrowder जावास्क्रिप्ट में एक सरणी पर प्रत्येक के लिए?
उपरोक्त महान उत्तरों के लिए एक और विचार जंजीर है। ForEach () के साथ आप चेन नहीं कर सकते, लेकिन मैप () के साथ, आप कर सकते हैं।
उदाहरण के लिए:
var arrayNumbers = [3,1,2,4,5];
arrayNumbers.map(function(i) {
return i * 2
}).sort();
.forEach () के साथ, आप .sort () नहीं कर सकते, आपको एक त्रुटि मिलेगी।
के लिए Ramda , के बीच का अंतर R.map()
और R.forEach()
है:
R.forEach()
मूल सरणी R.map()
लौटाता है जबकि एक फ़नकार लौटाता हैR.forEach()
केवल सरणी पर काम R.map()
कर सकते हैं, लेकिन एक ऑब्जेक्ट पर भी काम कर सकते हैं (यानी ऑब्जेक्ट की कुंजी / मान जोड़े को एक सरणी की तरह माना जाता है)
every
औरforEach
jQuery के तरीके नहीं हैं, मुझे लगता है कि यह संभावना नहीं है कि प्रश्न किसी भी तरह से jQuery से संबंधित है। developer.mozilla.org/en/JavaScript/New_in_JavaScript/1.6