【发布时间】:2021-01-27 02:41:43
【问题描述】:
为了进行设置,我创建了 2 个舰队对象,将它们存储在一个数组中,然后将数组打印到控制台。这是我在创建两个舰队对象后得到的。
[
{ number: 1, activities: [], addActivity: [Function (anonymous)] },
{ number: 2, activities: [], addActivity: [Function (anonymous)] }
]
fleet 对象的 addActivity 函数将一个活动添加到指定对象的活动数组中。这就是函数。
fleet.addActivity = function(activity) {
this.activities.push(activity);
}
但是,每当我使用此函数时,它都会更改数组中的两个队列对象,以使它们的编号与我指定的编号相同。例如,
const fleet = Fleet.getFleet(1);
fleet.addActivity('Run');
这是在控制台中打印的:
[
{
number: 1,
activities: [ 'Run' ],
addActivity: [Function (anonymous)]
},
{ number: 1, activities: [], addActivity: [Function (anonymous)] }
]
如果我再次使用
const fleet = Fleet.getFleet(2);
fleet.addActivity('Walk');
控制台会打印:
[
{
number: 2,
activities: [ 'Walk', 'Run' ],
addActivity: [Function (anonymous)]
},
{ number: 2, activities: [], addActivity: [Function (anonymous)] }
]
有人知道如何解决这个问题吗?
编辑- 这是 getFleet 函数:
function getFleet(fleetNumber) {
let result = exports.fleets.filter(function (e) {
return e.number = fleetNumber;
});
return result[0];
}
我也尝试了 lodash 深度克隆方法,但我仍然遇到同样的问题。这就是我的 addFleet 函数目前的样子。我之前创建舰队的方法已被注释掉。
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);
}
【问题讨论】:
-
请出示
getFleet函数。 -
请看你昨天发布的问题,因为我在你发布答案时考虑了这个问题:stackoverflow.com/questions/64309315/…
标签: javascript discord.js