나는이 미친 문제 때문에 꽤 우울합니다. 개체와 배열로 구성된 어려운 데이터 구조가 있습니다. 다음과 같이 보입니다.Javascript는 객체 배열의 모든 항목에서 속성을 변경합니다.
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
}
]
}
]
}
그래서 플레이어를 추적 할 수 있습니다. 팀 중 하나가 가리킬 때 매개 변수가 참으로 변경되고 시간이이 영역을 가져 오는 시간을 절약합니다. 내 기능은 다음과 같습니다
내가 매개 변수를 확인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 (오른쪽 값)으로 설정하고 모든 좋은 것입니다. 그러나이 배열에서 두 번째 객체 (id == 1)에서도 "checked"및 "time"매개 변수가 변경됩니다. "position"매개 변수가 올바른 개체에서만 올바르게 증가한다는 것 (id == 0)입니다. 내가 좋아하는 배열에 하드 인덱스 항목을 시도 :
Team.players[0].track...
그러나 그것은 동일하게 동작합니다. 누구나이 아이디어 나 어떤 아이디어를 경험 했습니까? 두 번째 오브젝트가 첫 번째 오브젝트와 함께 수정되지 않도록하는 방법.
의견을 보내 주셔서 감사합니다.
Team.players[a].position
가정
는
여기서 '위치'는 정의되어 있습니까? 또한 js에 연관 배열이 없으므로 유효한 데이터 예제를 제공하면 도움이됩니다. –
Uhm, 트랙 배열 내부의 객체를 어떻게 초기화합니까? 이것은 부작용이있는 것처럼 냄새가 심합니다. 배열은 같은 객체입니다 – Jenson
죄송합니다. 즉, 이어야합니다. position = Team.players [a] .position; – CMAZE