2013-09-05 13 views

답변

5

'shift'방법의 논리는 무엇입니까?

자세한 내용은 in the specification입니다. 기본적으로

, 어떻게 돌아가 변화() 또는 스플 라이스() 메소드 (또는 그 문제에위한 다른 방법)을 사용하지 않고 배열의 첫 번째 요소를 제거하는 방법은 무엇입니까?

변경하려는 인덱스까지 (끝에서 시작) 나는 그런 제한에 대한 어떤 좋은 이유를 볼 수 있지만 수동으로 각 항목을 위의 하나의 값을 할당하기 위해 루프를 사용할 수 있습니다

그런 다음 배열의 length을 1 자 이하로 설정하십시오. 이렇게 막연하게 보이는 것 (이것은 shift의 완전한 구현이 아니라고 확신합니다) :

Live example | 더 이상 길이 내에있는 요소를 제거 할 배열의 length 속성을 변경하면 Live source

var n; 
for (n = theArray.length - 2; n >= removeAt; --n) { 
    theArray[n] = theArray[n+1]; 
} 
--theArray.length; 

.

또한 delete를 사용하여 배열의 길이를 변경하지 않고 요소를 제거 할 수 있습니다

delete theArray[removeAt]; 

배열의 길이가 변경되지 않습니다,하지만 더 이상 해당 위치에 항목을 (전혀) 없을 것이다 . 희박한이됩니다 (아직없는 경우). 이는 delete 문이 개체에서 속성을 제거하기 때문에 작동하며 untyped JavaScript arrays are really just objects입니다.

+1

모든 요소를 ​​수동으로 하나의 위치만큼 왼쪽으로 이동할 수도 있습니다. –