gpt4 book ai didi

Javascript 更改对象数组中所有项目的属性

转载 作者:行者123 更新时间:2023-11-29 23:33:38 26 4
gpt4 key购买 nike

因为这个疯狂的问题,我很沮丧。我有一个由对象和数组组成的困难数据结构。它看起来像这样:

Team{
name: "name_of_team",
players: [

// PLAYER 1
{
id: 0,
position: 0,
track:[

// POINT 1
{
time: 0,
checked: false
},

// POINT 2
{
time: 0,
checked: false
},

// POINT 3
{
time: 0,
checked: false
}
]
},

// PLAYER 2
{
id: 1,
position: 0,
track:[

// POINT 1
{
time: 0,
checked: false
},

// POINT 2
{
time: 0,
checked: false
},

// POINT 3
{
time: 0,
checked: false
}
]
}
]
}

所以我可以跟踪玩家。当团队中的一个到达点时,其参数检查更改为 true 并且时间节省了获得该区域的时间。我的函数如下所示:

var a = Team.players.findIndex(x => x.id === 0);
var position = Team.players[a].position;
Team.players[a].track[position].checked = true;
Team.players[a].track[position].time = new Date();
Team.players[a].position++;

当我检查参数“a”时,它被设置为 0(正确的值)并且一切看起来都很好。但是“checked”和“time”参数也在这个数组的第二个对象(id == 1)中发生变化。疯狂的是“position”参数只在正确的对象(id == 0)中正确递增。我试图硬索引数组中的项目,如:

Team.players[0].track...

但它的行为是一样的。有没有人经历过这样的事情或任何想法如何避免第二个对象与第一个对象一起被修改。

感谢您的任何建议。

最佳答案

假设

Team.players[a].position

是位置,那就用吧。

var a = Team.players.findIndex(x => x.id === 0);
Team.players[a].track[Team.players[a].position].checked = true;
// ^^^^^^^^^^^^^^^^^^^^^^^^
Team.players[a].track[Team.players[a].position].time = new Date();
// ^^^^^^^^^^^^^^^^^^^^^^^^
Team.players[a].position++;

关于Javascript 更改对象数组中所有项目的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46726043/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com