Identifying problems within a JavaScript assembly

I am currently facing a challenge with a reference issue in my JavaScript collection.

You can take a look at the plunker to see what I mean -> plunker

The problem arises when I execute this code snippet:

approverSteps[0].loadedApprovers.push({prop1: 'test'});

As a consequence, the loadedApprovers property of the second element in the approverSteps collection (approverSteps1) also gets updated. It seems to be a reference issue; do you have any suggestions on how to resolve it?

Thank you very much for your help in advance.

Answer №1

The loadedApprovers array for all items points to a single empty array.

const approvalStepDefault = {
  loadedApprovers: [] // this array remains the same reference
};

Remember, arrays are passed by reference as well (since they are objects).

Give this a shot:

// you can skip using approvalStepDefault

let data = {
    steps: [{id: '01'},{id: '02'}]
};

let approverSteps = (data.steps || []).map(item => {
    const obj =  Object.assign({}, item); // make a copy of the item to keep the original intact (delete this line if not needed)
    obj.loadedApprovers = [];             // create a new array for each object
    return obj;
});

approverSteps[0].loadedApprovers.push({prop1: 'test'});
console.log(approverSteps);

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

Access navigation through Google Maps on an Android device directly from the website

Currently, I am in the process of developing an angular 4 website that fetches a list of latitude and longitude coordinates from the server. One of the key features on this website is a button that takes the user to Google Maps, where a route is constructe ...

Sending the user to their destination

There is a code in place that triggers when an email is sent to the user, containing a link that leads them to a specific endpoint upon opening. I am experiencing issues with redirection at the end of the function. The redirect does not seem to be working ...

Deactivate a particular function key with the help of jQuery

Is there a way to disable the F8 key on a web page using jquery, plugins, or just javascript? Thank you in advance! :) blasteralfred ...

What is the best way to send a continuous stream of data in Express?

I've been attempting to configure an Express application to send the response as a stream. var Readable = require('stream').Readable; var rs = Readable(); app.get('/report', function(req,res) { res.statusCode = 200; ...

Trouble activating header checkbox on initial click

Hello everyone, I have a question about two views: 1- Index 2- Edit In my grid, the header has a single checkbox. When I try to click the checkbox to select all rows, it doesn't work properly. The first time I click to uncheck and then check it agai ...

Store the advertisement click into the database utilizing PHP, subsequently access the provided hyperlink

I am developing a custom WordPress widget that displays advertisements. I want to track clicks on these ads and store the data in a database. The database table for click tracking is already set up, and I have a function called f1_add_advert_click($advert ...

Vue component failing to re-render after data modification

I'm a Vue beginner and I am attempting to showcase a list of "notes" that should update once a button is clicked (I have manually set the value to add for now). However, after adding a new item to the array, the changes are not reflected on the user i ...

Issue with using async await in map function: async function may not complete before moving on to the next item in the

Currently, I have an array that needs to be mapped. Inside the mapping function, there is an asynchronous function being called, which conducts an asynchronous request and returns a promise using request-promise. My intention was for the first item in the ...

What is the best way to insert a new record into a JSON file using AngularJS?

I encountered an issue while attempting to add records to a JSON file using AngularJS. I suspect there might be an error in my code. Can someone provide guidance on the correct way to achieve this task? Here is a link to my sample code on Plunker: Plunke ...

automatically changing radio button selection based on dropdown choice

Let's address the issue at hand: I have a dropdown list with over three options, and alongside it, a radio group for yes or no responses. What I am aiming to achieve is setting the radio button to "no" when option 1 is selected, and to "yes" when any ...

Include the image source in the array

Currently, I am utilizing this loop to showcase images using Smarty {foreach from=$gallery item=image key=KEY} <div class="col-lg-2 col-md-2 col-sm-4 col-xs-6 smallImage"> <img ng-click="bigImage('/files/galleries/{$image.gallery ...

Capturing HTTP requests using JavaScript

I am looking to modify all my ajax requests by intercepting them and changing POST methods before they go out. To intercept all my ajax calls, I can do the following: $.ajaxSetup({ beforeSend: function() { alert('sending...'); } ...

send the value from the input field to the designated button - link the two buttons

My goal is to create a feature where users can click on a button within the map and open an external page in Google Maps with specific dimensions (500 X 600) and without the Menu bar, Tool bar, or Status bar. // Custom Button Functionality by salahineo ...

Can a static text be displayed randomly using Javascript?

What I'm searching for is a unique text display feature that's different from scrolling. I envision a subtle fade in/out effect, but it's not necessary. The main goal is to fit within a small area on a website with limited vertical space - ...

What could be the reason behind the malfunction of this jQuery post request?

I am currently studying AJAX with jQuery, but I am facing an issue with my registration system. The following code does not seem to work: $('#submitr').click(function () { var username = $('#usernamefieldr').val(); var password ...

Tips for removing the current item from a list by clicking on a close icon of the same class name

Is there a way to remove a list item after clicking on its close icon? I am using a JavaScript function to add items to the list. Please refer to the image and code below. Thank you! https://i.stack.imgur.com/aeASd.png The code snippet is as follows: f ...

When inside a function declaration, io.socket is not defined, but it is defined outside of

Trying to utilize io.socket for a POST call to a controller action is presenting some unexpected behavior. Interestingly, when using io.socket.someMethod() within script tags as shown, it works smoothly: <script> io.socket.post('/visualization/ ...

Accessing store state in axios plugin with Nuxt.js

I've encountered a problem where I have a token stored, but I'm struggling to access it in my axios plugin while using Nuxt.js. In the past with just Vue, it was simple to import the store and access the token. However, I'm having difficulty ...

Toggling the visibility of divs in a dynamic layout

How can I use JQuery/JavaScript to show only the comment form for a specific post when a button or link is clicked on a page containing multiple posts divs with hidden comment forms? <div class="post"> <p>Some Content</p> <a ...

Encountering unexpected fetch requests to JSON files when using getStaticProps/getStaticPaths

My webpage seems to be functioning correctly, however I have noticed that in the console there are 5, 404 errors appearing on fetch requests. It's puzzling where these errors are originating from. Interestingly, these 404 errors only occur in the pro ...