यह काम नहीं कर रहा है क्योंकि सभी आप कर रहे हैं तर्क आप दिए गए थे (item
) है, जो सरणी के लिए एक जीवित कनेक्शन नहीं है का मान अद्यतन करने के लिए है। जैसे ही आपका कॉलबैक लौटाता है, वह परिवर्तन गायब हो जाता है।
यह करने के लिए सबसे उपयुक्त तरीका map
उपयोग करने के लिए है:
var arr = [{num: 1}, {num: 2}];
arr = arr.map(function(item) {
return {somethingElse: 1};
});
console.log(arr);
map
प्रत्येक आइटम अपने समारोह देता है और एक नई सरणी जो कुछ से तुम वापस बनाता है।
यदि यह महत्वपूर्ण है कि आप में जगह सरणी अद्यतन एक नया एक के निर्माण के बजाय, आप forEach
उपयोग कर सकते हैं, तो आप सिर्फ वापस सरणी तत्व आप अद्यतन कर रहे हैं करने के लिए आवंटित करने के लिए किया है। forEach
को दूसरा तर्क ':, ऊपर
var arr = [{num: 1}, {num: 2}];
arr.forEach(function(item, index) {
arr[index] = {somethingElse: 1};
});
console.log(arr);
बेशक
, दोनों ही मामलों में आप वास्तव में कुछ के लिए item
, जो आप नहीं कर रहे का उपयोग किया था रों कॉलबैक सूचकांक आप जा रहे हैं, इसलिए है' आपके उदाहरण कोड में टी ... यदि आप item
पर गुणों को जोड़ना/निकालना चाहते हैं, तो ऑब्जेक्ट को पूरी तरह से प्रतिस्थापित नहीं करें, Cyril's answer आपको दिखाता है कि यह कैसे करें।
स्रोत
2015-11-02 14:28:58
मेरा मानना है कि आप मैप मतलब की सूची में एक और किस्म? 'arr.map (फ़ंक्शन (आइटम) {वापसी {कुछ भी: 1}});' – Ziki