मैं एक अजीब के साथ संघर्ष कर रहा हूँ 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}, ()=>[]);