2014-01-15 3 views
0

for 루프에서 배열을 조작하려고합니다. 배열의 끝에 항목을 추가하고 배열의 시작 부분에서 요소를 삭제하려고합니다. 같은 :함수 shift()가 루프 내에서 작동하지 않습니다.

var internal = new Array(); 

for(var i = 0; i < 1000; i++) { 
    internal[i] = Math.floor(Math.random() * 37); 

    internal.shift(); 
    console.log(internal.length); 
} 

문제는 루프 내부에서 작동하지 않습니다, 사실, 어떤 요소가 배열에서 삭제하지 않습니다() 전환과 같은 것입니다!

해결책이 있습니까? 여기

JsFiddle

답변

2

매번 1 씩 감소하지만 배열 인덱스 액세스로 액세스 할 때마다 매번 증가합니다. 대신

internal[i] = Math.floor(Math.random() * 37); 

사용

예를 들어
internal.push(Math.floor(Math.random() * 37)); 

, 그것은 처음 세 eleme을위한 공간을 만들어

[ , , , 'thefourtheye' ] 

var internal = []; 
internal[3] = "thefourtheye"; 
console.log(internal); 

출력 nts를 지정하고 지정된 색인에 요소를 추가했습니다. 따라서 어레이를 계속 유지할 것입니다.

참고 : 사용 [] 새로운 배열을 생성하는 대신 new Array()

+0

대단히 감사합니다! – Lughino

+0

@Lughino 당신은 오신 것을 환영합니다 :) – thefourtheye

1

하드 코딩 인덱스를 사용하고 있기 때문에,

var internal = new Array(); 

for(var i = 0; i < 1000; i++) { 
    internal.push(Math.floor(Math.random() * 37)); 

    internal.shift(); 
    console.log(internal.length); 
} 

데모 시도 : Fiddle


//test 
var arr = []; 
arr[50] = 1; 
console.log('arr.length', arr.length); 

가 인쇄됩니다 51하지 1

관련 문제