2016-03-02 8 views
5

निम्न कोड में धक्का:जावास्क्रिप्ट: अनपेक्षित व्यवहार खाली सरणी

var arr1 = [1,2,3]; 
var obj1 = {}; 

for (var j = 0; j < arr1.length; j++) { 
    if (obj1[j.toString()]) 
     obj1[j.toString()] = obj1[j.toString()].push(j) 
    else 
     obj1[j.toString()] = [].push(j); 
} 

निम्नलिखित उत्पादन का उत्पादन:

obj1 
=> { '0': 1, '1': 1, '2': 1 } 

और मैं बस कृपया पता है क्यों करना चाहते हैं।

(मैं अब जागरूक कर रहा हूँ कि निम्नलिखित कोड:

var arr1 = [1,2,3]; 
var obj1 = {}; 

for (var j = 0; j < arr1.length; j++) { 
    if (obj1[j.toString()]) 
     obj1[j.toString()] = obj1[j.toString()].push(j) 
    else { 
     obj1[j.toString()] = []; 
     obj1[j.toString()].push(j); 
    } 
} 

मुझे मेरे वांछित आउटपुट दे देंगे:

obj1 
=> { '0': [ 0 ], '1': [ 1 ], '2': [ 2 ] } 

)

+2

ठीक है, '[] '' Array.prototype' जैसा ही है, वहां कोई खाली सरणी नहीं है, और आप' obj' के अंदर कुछ भी नहीं दबा रहे हैं। दूसरा कोड स्निपेट ऐसा करने का सही तरीका है, जहां आप वास्तव में एक खाली सरणी बनाते हैं – adeneo

उत्तर

11

क्योंकि from the documentationArray.prototype.push() विधि रिटर्न सरणी लंबाई , सरणी ही नहीं।

+0

पहले स्निपेट को नोटिस नहीं किया गया था। +1 –

+0

पुष्टि की। [1,2,3]। पुश (60); // 4; []। पुश (9 0); // 1; धन्यवाद। – anatta

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