ऑब्जेक्ट सरणी $ .each में अपडेट कर रहा है

मैं ऐसा क्यों नहीं कर सकता:

var x = [
    { 'z': 3, y: [1,2,3,4]},
    { 'z': 5, y: [2,2,2,2]},
    { 'z': 6, y: [1,4,3,5]},
    { 'z': 8, y: [1,1,3,4]},
];

$(x).each(function() {
    console.log(this.z);
    $(this.y).each(function(i, n) {
       n = n * 2;
    });
});

// expected result from the first iteration would be: 
{ 'z': 3, y: [2,4,6,8]}

मैं एन अद्यतन करना चाहता हूं, हालांकि काम नहीं करता है। क्या यह किया जा सकता है, और यदि ऐसा है तो कैसे?

0
हाँ, मैंने बहुत ही phrased ...
जोड़ा लेखक Nathan, स्रोत
यह काम करता हैं।" यह ऐसा नहीं करता जो आपको लगता है कि ऐसा करता है, क्योंकि n मूल सरणी में क्या है इसका संदर्भ नहीं है।
जोड़ा लेखक Matt Ball, स्रोत
त्रुटियों वाक्यविन्यास पहले ठीक करें ...
जोड़ा लेखक gloomy.penguin, स्रोत
क्या आप समझते हैं कि आपको इस सवाल पर इतने सारे डाउनवॉट क्यों मिले? मैं उनमें से एक नहीं था लेकिन मैं बस भविष्य की पोस्ट एन सामान के लिए सुनिश्चित करने के लिए जांच कर रहा हूँ ...
जोड़ा लेखक gloomy.penguin, स्रोत
आम तौर पर $। प्रत्येक (x, function (k, v) { का उपयोग करते समय सरणी या ऑब्जेक्ट्स को लूप करते समय ... $() में लपेटने की कोई आवश्यकता नहीं है
जोड़ा लेखक charlietfl, स्रोत
@ नाथन - मुझे लगता है कि आपको इतने सारे डाउनवॉट मिले हैं क्योंकि आपके मूल उदाहरण में कुछ वाक्यविन्यास त्रुटियां थीं। मैंने व्यक्तिगत रूप से सोचा कि वे नाबालिग थे, इसलिए मैंने उन्हें ठीक किया, लेकिन आपको इन आवश्यकताओं के अनुरूप वैध कोड पोस्ट करना चाहिए: sscce.org

2 उत्तर

जब आप n = n * 2; कर रहे हैं तो आप प्रत्येक हैंडलर में स्थानीय चर n का मान अपडेट कर रहे हैं।

$(x).each(function (_, obj) {
    console.log(this.z);
    this.y = $.each(this.y, function (i, n) {
        obj.y[i] = n * 2;
    })
})

Demo: Fiddle

0
जोड़ा

इसे इस्तेमाल करे:

$(x).each(function() {
    console.log(this.z);
    var y = this.y;
    $(y).each(function(i, n) {
        y[i] *= 2;
    });
});
0
जोड़ा