다차원 배열 (myArray)에서 임의의 항목을 선택하고 새 변수 (myTempArray)에 저장 한 후 첫 번째 항목을 ID 번호로 업데이트하는 함수를 작성하려고합니다. counter).Javascript 슬라이스 사용 이전 값
mytempArray [0] [0] [0]의 값을 변경하면 myArray의 해당 값도 업데이트됩니다. 나는이 가치들이 바뀌길 원하지 않는다.
어떻게 이런 일이 일어나지 않습니까? 슬라이스가 잘못된 방법으로 사용합니까? 그렇다면 원래 배열 항목을 복제하여 수정할 수 있고 다른 곳에서 사용할 수 있습니까? 코드는 다음과 같습니다 :
var myArray = [
[[0, "Description 1", 0, 0, 1, 6, 0, 0, 0, true, 0]],
[[0, "Description 2", 0, 0, 1, 6, 0, 0, 0, true, 0]],
[[0, "Description 3", 0, 0, 1, 6, 0, 0, 0, true, 0]],
];
function randomNumber (min, max) {
return Math.floor((Math.random() * max) + min);
};
counter = 1;
function myfunction(){
myrand = randomNumber(0,myArray.length-1);
mytempArray = myArray.slice(myrand,myrand+1);
mytempArray[0][0][0] = counter;
counter++;
};
myfunction();
배열은 참조 유형입니다. 'slice'는 얕은 복제 만하고 중첩 된 배열은 참조로 새로운 배열로 복사됩니다. –
배열을 전체적으로 복사하는 방법을 살펴보십시오. https://stackoverflow.com/questions/597588/how-do-you-clone-an-array-of-objects-in-javascript – MynockSpit
'Object.assign()'외에도'... []'스프레드 연산자. –