Activating the array of pre-established arrays updates each element

Can someone help me understand the strange behavior I'm experiencing with Array.prototype.fill? Here's an example:

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

It seems like all elements in the array are connected and changing one affects the others. I believe all references point to the same array, but I don't know why this is happening. Any insights on this?

Answer №1

When using fill([]), the argument [] is first evaluated before the actual call to fill.

This can be represented as:

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

Alternatively, it can also be shown as:

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

In essence, this results in having the same subarray at all indices: arr[1] will be identical to arr[0].

If you wish to have different subarrays instead, you could use:

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

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Utilizing the AngularJS component repetitively within an ng-repeat loop

I am facing an issue with a dropdown component in AngularJS. When I use the component once, it works perfectly and the values are selected as expected. However, if I use the same component multiple times within an ng-repeat loop, the dropdowns are rendered ...

What is the best way to pass value to a URL in a React JS application?

Is there a way to properly use history.push in React to push text to the URL route manually? I am trying to achieve this in my onChange method for an input field: function Header(props) { return ( <div> <input type="radio" onChan ...

What is the process for retrieving a list of image URLs from Firebase storage and then transferring them to Cloud Firestore?

Currently, I am working on uploading multiple images to Firebase Cloud Storage simultaneously. The process involves uploading the images, obtaining their URLs upon completion, adding these URLs to a list variable called urlsList, and then uploading this li ...

Chrome is presenting a problem with AngularJS due to a missing 'Access-Control-Allow-Origin' header on the requested resource

I am currently experimenting with AngularJS to enhance my skills and I have successfully set up my app on http://127.0.0.1:9000/ after running the necessary grunt task. Now, I want to learn how to implement an Authorization/Authentication request (specific ...

What is the best way to concentrate on necessary or incorrect fields?

In the event that users scroll down and miss some of the required fields in a lengthy form, they may not see error messages when clicking the Save button to submit the form data. Is it possible to implement an on focus method that automatically directs the ...

Develop and share a function to be assessed within a different scope's context in JavaScript

Currently, I'm exploring the use of angular and bootstrap tour and I have a challenge in trying to isolate objects within their own area without storing them in the controller. My goal is to store an object in the service, which also contains function ...

What is the best way to use ajax to append a value to an input if it is empty, or add a comma with

I recently came across this answer and implemented the following code: Here is the Ajax receiver: success: function(data) { jQuery("#assigncat").val(function(i,val) { return val + (val ? '' : ', ') + data.cat_id; ...

Is there a way to display a Google Map marker after a certain amount of time without needing to refresh the

Is it possible to update Google Map markers without refreshing the map itself every 30 seconds? The markers' latitudes and longitudes are retrieved from a database. Once obtained, these markers are then allocated onto the Google Map. However, the i ...

Limiting functional component re-renders to only occur when certain states change

Is there a way to make a component re-render only when a specific state in that component changes, instead of re-rendering with every state change? Here is an example code snippet: suppose I have a component with three states and I want it to re-render on ...

Learning the ropes: Building a model with nodejs using tensorflow.js

I am interested in creating an image classifier, but I lack knowledge of python. Since I am familiar with javascript, I have been considering using Tensorflow.js. Can models be trained with Tensorflow.js, and if so, what are the steps involved in the proce ...

The return type of a server-side component in NextJS 14 when it is asynchronous

When using NextJS 14, I encountered a problem with the example provided in the documentation. The example is within the Page component, typically typed as NextPage. However, this type does not support the use of async await server components. In my case, ...

Synchronous loop in Javascript

Is there a method to execute codes asynchronously within a for loop? In this scenario, events ranging from day x to y need to be inserted into the calendar using a for loop. However, the current loop is taking too long, as it has to cover all the days fro ...

How can I prevent a browser from allowing users to select an image tag?

I'm dealing with an issue on my webpage where I have an image that is inadvertently picking up mouse clicks, causing the browser to perform drag and drop actions or highlight the image when clicked. I really need to use the mousedown event for somethi ...

The Express.js server encounters a 404 error, causing it to panic and throw an exception before I can even address the issue

(Just so you know, I'm utilizing the Blizzard.js npm package in combination with Express.) I am currently working on a web application that allows users to search for statistics of specific video game characters (profiles created by players). Given t ...

Tips for incorporating child components when creating unit tests in Angular 2

While working on my component, I encountered an issue with the child component during unit testing. An error message is appearing stating that the child component is not defined. Any advice or solutions would be greatly appreciated. Thank you in advance. ...

Tips for extracting data from a JSON file

I'm attempting to retrieve a list of music genres from my json file using PHP and JQuery ajax. Here is the format of my json file [ "12-bar blues", "2 tone", "2-step garage", "4-beat", "50s progression", "a cappella", "accordion", " ...

Issue with Slider Width in WP 5.6 editor and ACF Pro causing layout problems

Is anyone else experiencing a specific issue after updating to WP 5.6? Since the update, all my websites are facing problems with rendering a Slick Slider in the Block Editor. Interestingly, everything looks fine on the front-end. The root of the problem ...

"Transforming a PHP array into a well-structured string format

If I have an array structured like the one below, which could be multi-dimensional, I need to implement a recursive loop to properly handle it. I believe I am almost there, but I am struggling to identify the mistake in my code. [ { "value": "ri ...

What causes the vertical scroll bar to shift on its own?

I'm puzzled by the behavior of the vertical scroll bar when clicking on "Line 9" - it automatically moves to the top position and subsequent clicks don't affect it. Can someone shed light on why this happens and how to resolve it? I am using Fire ...

positioned the div within the StickyContainer element to ensure it remains fixed in place

I've been working on making a div sticky in a React project. To achieve this, I added the react-sticky package to my project. I placed the div within the StickyContainer component as per the documentation. Although there are no visible errors, the sti ...