2017-01-09 8 views
-1

대신 인덱스 1로 밀고, 나는 다음과 같은 for 루프, 다른 함수에서 초기화하기 위해 노력하고있어 : 일부자바 스크립트 내가 자바 스크립트 변수가 0

var test = { 
 
    det: [{x: -1, y: -1}] 
 
}; 
 

 
for (var i = 0; i < 4; i++) { 
 
     test.det.push({x:10+i, y:10}); 
 
} 
 

 
console.log(test.det);

이유는 test.det[0]에 액세스하려고 시도 할 때 이 내 값인 x & y으로 표시됩니다. 인덱스 1에 액세스 할 때 처음으로 푸시 된 값만 가져옵니다. 모든 인덱스가 이동 된 것처럼 보이지만 왜 그런 일이 벌어 질지 전혀 알 수 없습니다.

+2

그러나'.push을()'항상 배열의 끝 부분에 추가되고 배열은 그 안에 하나의 것을 가지고 시작합니다. – Pointy

+0

나는 본다. 나는'det : [{x : -1, y : -1}]'내'test' 행이 배열의 첫 번째 항목 인 것처럼 보입니다. – mysticalstick

+1

오른쪽. 빈 배열로 시작하려면'[]'를 사용하십시오. – Pointy

답변

2

Array#push은 현재 마지막 항목 다음에 다른 항목을 추가합니다. Array#push

var test = { 
 
    det: [{x: -1, y: -1}] 
 
}; 
 

 
for (var i = 0; i < 4; i++) { 
 
    test.det[i] = ({x:10+i, y:10}); 
 
} 
 

 
console.log(test);

하거나 배열을 취소 한 사용 : 사용 할당 =를 다시 초기화하려면

var test = { 
 
    det: [] 
 
}; 
 

 
for (var i = 0; i < 4; i++) { 
 
    test.det.push({x:10+i, y:10}); 
 
} 
 

 
console.log(test);

+0

이 코드에서는'det'의 내용을 선언 할 이유가 없습니다. 그냥'var test = {det : []}'를 사용하십시오. – Phrogz

+0

@Phrogz - 저는 그가 기존 어레이를 다시 초기화하려고한다고 생각합니다. 그렇지 않다면, 그는'var test = {det : []}'로 시작해서 push를 사용할 수 있습니다. –