Javascript

Push()

2DC 2022. 8. 11. 15:06

Push() 메서드는 배열의 끝에 한개 또는 그 이상의 요소들을 추가하고,

요소가 추가된 배열의 길이(length)를 반환한다.

 

const apples = ['Fuji', 'Gala']
const trees = apples.push('Pink Lady', 'Washington')
console.log(apples);
console.log(trees);

push() 메서드로 인해 apples 배열에는 Fuji, Gala 라는 요소가 배열의 끝에 추가되었고,

push() 메서드의 반환값은 새로운 배열의 길이 이므로 trees 에는 4가 할당되었다.

 


아래의 코드는

각 변수에 동일한 배열의 레퍼런스를 참조하게 한 후

동일한 배열의 레퍼런스를 push한 것이다.

말보다는 코드를 보는게 더 이해가 잘 간다.

const peaches = [4, 8, 12]
const plums = peaches
const b = peaches.push(plums)
console.log(peaches)
console.log(plums)
console.log(b)

이 경우, plums와 peaches는 참조하는 배열의 주소가 같다.

따라서 peaches.push(plums)를 하게되면

마지막 배열에 자신이 참조하는 배열 자체를 또 추가하게 된다.

 

따라서 아래와 같이 출력된다.

(같은 레퍼런스를 순환참조하는 의미)


 

이것은 어떻게 출력될까?

const peaches = [4, 8, 12]
const plums = peaches
peaches.push(plums)

peaches[3][1] = 39
console.log(peaches);

peaches[3][1] = 39의 의미는 뭘까?

push 메서드에 의해 추가된 동일한 배열을 생각해보자.

 

peaches와 plums은 [4, 8, 12, [4, 8, 12]] 일 것이다.

이 때 첫 배열의 인덱스는 0, 1, 2, 3이다.

이를 통해 [3][1]이 세번째 인덱스의 [1] 값을 지정한다는 것을 알 수 있다.

그 값을 39로 바꾼다면

[4, 39, 12, [4, 39, 12]] 가 될 것이다.

 

위의 배열은 서로 참조가 같기 때문에 값이 같이 바뀐다.