To set this up I create 2 fleet objects, store them in an array, then print the array to console. This is what I get after both fleet objects are created.
[
  { number: 1, activities: [], addActivity: [Function (anonymous)] },
  { number: 2, activities: [], addActivity: [Function (anonymous)] } 
]
The addActivity function of the fleet object adds an activity to the activities array of the specified object. This is the function.
    fleet.addActivity = function(activity) {
        this.activities.push(activity);
    }
However, whenever I use this function, it changes both fleet objects in the array so that they have the same number as the one that I specified. For example,
const fleet = Fleet.getFleet(1);
fleet.addActivity('Run');
This is printed in console:
[
  {
    number: 1,
    activities: [ 'Run' ],
    addActivity: [Function (anonymous)]
  },
  { number: 1, activities: [], addActivity: [Function (anonymous)] }
]
If I were to do it again using
const fleet = Fleet.getFleet(2);
fleet.addActivity('Walk');
Console would print:
[
  {
    number: 2,
    activities: [ 'Walk', 'Run' ],
    addActivity: [Function (anonymous)]
  },
  { number: 2, activities: [], addActivity: [Function (anonymous)] }
]
Does anyone have any idea of how to fix this?
EDIT- Here is the getFleet function:
function getFleet(fleetNumber) {
    let result = exports.fleets.filter(function (e) {
        return e.number = fleetNumber;
    });
    return result[0];
}
I also tried the lodash deep cloning method and I still have the same issue. This is what my addFleet function currently looks. My previous method of creating fleets has been commented out.
function addFleet(number) {
    /*let fleet = {
        number: number,
        activities: []
    };
    fleet.addActivity = function(activity) {
        this.activities.push(activity);
    }*/
    const deepClone = lodash.cloneDeep(originalFleet);
    deepClone.number = number;
    exports.fleets.push(deepClone);
    exports.fleetAmount += 1;
    exports.currentFleets.push(number);
}
 
    