/ / पूर्वनिर्मित सरणियों के सरणी पर पुश सभी तत्वों को सेट करता है [डुप्लिकेट] - जावास्क्रिप्ट, सरणियाँ, भरें

Prefilled arrays की सरणी पर पुश सभी तत्वों [डुप्लिकेट] सेट करता है - जावास्क्रिप्ट, सरणी, भरें

मैं एक अजीब के साथ संघर्ष कर रहा हूँ Array.prototype.fill व्यवहार:

const arr = new Array(5)
.fill([]);
arr[0].push("element pushed to 0 only");
console.log(arr[1]); // ["element pushed to 0 only"]

सरणी के अंदर सभी आइटम इस स्ट्रिंग से भरे हुए हैं। मैं सब मान लेता हूं [] सरणी- s उसी सरणी की ओर इशारा कर रहे हैं, लेकिन मैं नहीं देखता कि कोई क्यों समझा सकता है?

उत्तर:

उत्तर № 1 के लिए 1

में fill([]), बहस [] कॉल करने से पहले मूल्यांकन किया जाता है fill.

यह वही है

const subarray = [];
const arr = new Array(5);
arr.fill(subarray);

जो वही है

const subarray = [];
const arr = new Array(5);
for (var i=0; i<arr.length; i++) arr[i] = subarray;

दूसरे शब्दों में, आपके पास सभी सूचकांकों में समान उप सरणी है: arr[1] है arr[0].

यदि आप अलग-अलग सबरेज़ करना चाहते हैं, तो आप कूपल करें

const arr = Array.from({length:5}, ()=>[]);