मेरी प्रतिक्रिया काफी हद तक यहाँ उच्चतम श्रेणी की प्रतिक्रिया पर आधारित है और उम्मीद है कि हर कोई समझता है (मेरे GitHub पर भी यही स्पष्टीकरण है)। यही कारण है कि नक्शे के काम के साथ उनकी अशुद्धता:
Object.keys(images).map((key) => images[key] = 'url(' + '"' + images[key] + '"' +
')');
फ़ंक्शन का उद्देश्य किसी ऑब्जेक्ट को लेना और ऑब्जेक्ट की मूल सामग्री को संशोधित करना है, जो सभी ऑब्जेक्ट्स (ऑब्जेक्ट्स और सरणियों) के लिए उपलब्ध एक विधि का उपयोग करके एक सरणी को वापस किए बिना। जेएस के भीतर लगभग सब कुछ एक वस्तु है, और उस कारण से वंशानुक्रम की पाइपलाइन के नीचे के तत्व संभावित रूप से लाइन में उपलब्ध लोगों के लिए तकनीकी रूप से उपयोग कर सकते हैं (और यह उल्टा दिखाई देता है)।
कारण यह काम करता है कि। सरणी फ़ंक्शन को वापस करने के कारण यह है कि आप किसी मौजूदा ऑब्जेक्ट को केवल संशोधित करने के बजाय किसी सरणी का स्पष्ट या अंतर्निहित RETURN प्रदान कर रहे हैं। आप अनिवार्य रूप से प्रोग्राम को इस बात में उलझा देते हैं कि ऑब्जेक्ट Object.keys का उपयोग करके एक सरणी है, जो आपको व्यक्तिगत मान के साथ जुड़े मूल्यों पर अभिनय के साथ मैप फ़ंक्शन का उपयोग करने की अनुमति देगा (मैं वास्तव में गलती से वापस आए सरणियों लेकिन इसे ठीक कर दिया है)। जब तक सामान्य अर्थों में वापसी नहीं होती है, तब तक कोई ऑब्जेक्ट नहीं बनाया जाएगा जो मूल ऑब्जेक्ट स्टिल बरकरार और प्रोग्राम के रूप में संशोधित हो।
यह विशेष कार्यक्रम छवियों नामक एक वस्तु लेता है और इसकी कुंजियों के मूल्यों को लेता है और किसी अन्य फ़ंक्शन के भीतर उपयोग के लिए यूआरएल टैग जोड़ता है। मूल यह है:
var images = {
snow: 'https://www.trbimg.com/img-5aa059f5/turbine/bs-md-weather-20180305',
sunny: 'http://www.cubaweather.org/images/weather-photos/large/Sunny-morning-east-
Matanzas-city- Cuba-20170131-1080.jpg',
rain: 'https://i.pinimg.com/originals/23/d8
/ab/23d8ab1eebc72a123cebc80ce32b43d8.jpg' };
... और यह संशोधित है:
var images = {
snow: url('https://www.trbimg.com/img-5aa059f5/turbine/bs-md-weather-20180305'),
sunny: url('http://www.cubaweather.org/images/weather-photos/large/Sunny-morning-
east-Matanzas-city- Cuba-20170131-1080.jpg'),
rain: url('https://i.pinimg.com/originals/23/d8
/ab/23d8ab1eebc72a123cebc80ce32b43d8.jpg')
};
वस्तु की मूल संरचना तब तक बरकरार रहती है जब तक कि वह सामान्य संपत्ति तक पहुँच के लिए अनुमति नहीं देती है जब तक कि वापसी नहीं होती है। क्या यह सामान्य की तरह एक सरणी वापस नहीं है और सब कुछ ठीक हो जाएगा। लक्ष्य मूल मूल्यों (छवियों [कुंजी]) की आवश्यकता है जो कुछ और नहीं करना चाहता था। जहाँ तक मुझे पता है, सरणी के उत्पादन को रोकने के लिए छवियों की कुंजी [कुंजी] होना चाहिए और किसी सरणी को वापस करने के लिए कोई निहित या स्पष्ट अनुरोध नहीं है (चर असाइनमेंट यह करता है और मेरे लिए आगे और पीछे गड़बड़ कर रहा था)।
संपादित करें:
मूल वस्तु को संशोधित करने से बचने के लिए नए ऑब्जेक्ट निर्माण के बारे में अपनी अन्य विधि को संबोधित करने के लिए जा रहे हैं (और गलती से आउटपुट के रूप में एक सरणी बनाने से बचने के लिए पुन: असाइनमेंट अभी भी आवश्यक प्रतीत होता है)। ये फ़ंक्शन तीर सिंटैक्स का उपयोग करते हैं और यदि आप बस भविष्य में उपयोग के लिए एक नई वस्तु बनाना चाहते हैं।
const mapper = (obj, mapFn) => Object.keys(obj).reduce((result, key) => {
result[key] = mapFn(obj)[key];
return result;
}, {});
var newImages = mapper(images, (value) => value);
इन कार्यों के काम करने का तरीका इस प्रकार है:
MapFn बाद में जोड़े जाने वाले फ़ंक्शन (इस मामले में (मान) => मान) लेता है और बस उस कुंजी के लिए एक मूल्य के रूप में संग्रहीत किया जाता है (या यदि आप जैसे उसने वापसी मूल्य बदल दिया है) के लिए मैप में कोई भी रिटर्न देता है ( obj) [कुंजी],
और फिर परिणाम में कुंजी के साथ जुड़े मूल मूल्य को फिर से परिभाषित करता है [key] = mapFn (obj) [कुंजी]
और परिणाम पर किए गए ऑपरेशन को वापस लौटाता है (को। फ़ंक्शन के अंत में शुरू किए गए ब्रैकेट्स में स्थित संचायक)।
यह सब चुने हुए ऑब्जेक्ट पर किया जा रहा है और वहां कहीं भी लौटाए गए सरणी के लिए एक अंतर्निहित अनुरोध नहीं हो सकता है और केवल तब ही काम करता है जब मैं मानों को फिर से बता सकता हूं। इसके लिए कुछ मानसिक जिम्नास्टिक्स की आवश्यकता होती है, लेकिन आवश्यक कोड की रेखाओं को कम कर देता है जैसा कि ऊपर देखा जा सकता है। आउटपुट बिल्कुल वैसा ही है जैसा नीचे देखा जा सकता है:
{snow: "https://www.trbimg.com/img-5aa059f5/turbine/bs-
md-weather-20180305", sunny: "http://www.cubaweather.org/images/weather-
photos/l…morning-east-Matanzas-city-Cuba-20170131-1080.jpg", rain:
"https://i.pinimg.com/originals/23/d8
/ab/23d8ab1eebc72a123cebc80ce32b43d8.jpg"}
ध्यान रखें कि यह NON-NUMBERS के साथ काम करता है। आप MapFN फ़ंक्शन में किसी भी ऑब्जेक्ट को SIMPLY RETURNING THE VALUE द्वारा डुप्लिकेट कर सकते हैं।
Object.keys
, जिसमें कोई अच्छी तरह से परिभाषित आदेश नहीं है। यह समस्याग्रस्त हो सकता है, मैंObject.getOwnPropertyNames
इसके बजाय उपयोग करने का सुझाव देता हूं ।