2012-03-15 3 views
14

मान लें कि मेरे पास एक फ़ंक्शन और सरणी है। मैं सरणी में प्रत्येक प्रविष्टि में फ़ंक्शन को लागू करके सरणी को संशोधित करना चाहता हूं। फ़ंक्शन सीधे मान को संशोधित नहीं करता है; यह एक नया मूल्य देता है।node.js या जावास्क्रिप्ट में किसी सरणी को मैप करने का क्लीन तरीका

छद्म कोड में,

for (entry in array) { 
    entry = function(entry); 
} 

के कुछ तरीके हैं यह मेरे लिए हुआ करने के लिए कर रहे हैं: के बाद से मैं Node.js उपयोग कर रहा हूँ

for (var i = 0; i < arr.length; i++) { 
    arr[i] = fn(i); 
} 

या, और अंडरस्कोर में बनाया गया है :

arr = _.map(arr, fn); 

लेकिन यह दोनों थोड़ा उलझन लगते हैं। मानक "के लिए" ब्लॉक अत्यधिक वर्बोज़ महसूस करता है, और _.map फ़ंक्शन पूरे सरणी को फिर से असाइन करता है ताकि अक्षम हो।

आप यह कैसे करेंगे?

हाँ, मुझे पता है कि मैं इस :)

+4

बस अंडरस्कोर-फ़ंक्शन का उपयोग करें जब तक कि आप निश्चित न हों कि यह एक प्रदर्शन समस्या है। यह बहुत पठनीय और साफ है, इसलिए जब तक कि यह वास्तव में एक मुद्दा नहीं है, आपकी "अक्षमता की भावना" आपको अधिक दबाव वाले मुद्दों पर जाने से नहीं रोकती है :) – PatrikAkerstrand

+0

पूरी तरह से सच है! मैं अभी भी उत्सुक हूँ, फिर भी। – Eric

उत्तर

25

Array#map() विधि overthinking कर रहा हूँ कर रहा हूँ।

var arr = arr.map(fn); 

_.map() शायद उसी तरह लागू किया गया है।

+2

यदि आप Node.js का उपयोग कर रहे हैं तो आप जानते हैं कि आप जेएस इंटरप्रेटर का उपयोग कर रहे हैं, इस प्रकार आप जानते हैं कि ईसीएमएस्क्रिप्ट 5 की चीजें लागू की गई हैं ... जिसमें ऐरे # मानचित्र शामिल है :) – RyanWilcox

संबंधित मुद्दे

 संबंधित मुद्दे