JS 배열 메서드(slice()) - 매개변수로 음수를 받을 때

주땡이·2024년 2월 6일

JS

목록 보기
2/12

Slice()

  • 매개변수로 음수를 받을 수 있다.
// 매개변수를 하나의 음수로 받는 경우
const animals = ['ant', 'bison', 'camel', 'duck', 'elephant']

console.log(animals.slice(-2)); // ['duck', 'elephant']

매개변수를 음수로 받았을 때는 배열의 맨 뒤에서 부터 인덱스를 카운트하게 된다.
-0은 존재하지 않기 때문에 -1번째 인덱스에 해당하는 값이 'elephant'이고, 예시 코드의 매개변수로는 -2를 받았기 때문에 'duck'부터 배열의 끝까지 잘라낸 배열을 반환하게 된다.

  • 매개변수를 양수, 음수로 받을 수 있다.
// 매개변수를 양수와 음수로 받는 경우
const animals = ['ant', 'bison', 'camel', 'duck', 'elephant']

console.log(animals.slice(2, -1)) // ["camel", "duck"]

이게 뭐지 싶었지만 '첫번째 매개변수는 시작 인덱스, 두번째 인덱스는 종료 인덱스' 임을 잊지 않는다면 어렵지 않다.
2번째 인덱스에 해당하는 'camel'부터 -1번째에 해당하는 'elephant'의 바로 앞!!!!! 까지만 잘라내면 된다. 따라서 'duck'까지 해당하는 배열이 반환된다.
⭐️종료 인덱스는 배열에 포함하지 않는다⭐️

  • 매개변수를 모두 음수로 받을 수 있다.
// 매개변수를 모두 음수로 받는 경우
const animals = ['ant', 'bison', 'camel', 'duck', 'elephant']

console.log(animals.slice(-2, -1)) // ["duck"]

아 이제 쉽다 쉬워! 종료 인덱스는 배열에 포함하지 않는다고 하였으니 -2번째 인덱스에 해당하는 'duck'만 새로운 배열로 반환된다.

  • 그렇다면, 매개변수로 음수와 양수를 받으면 어떻게 될까?
// 매개변수를 음수와 양수로 받는 경우
const animals = ['ant', 'bison', 'camel', 'duck', 'elephant']

console.log(animals.slice(-2, 1)) // []

이게 좀 헷갈렸다. -2번째 인덱스에 해당하는 'duck'부터 시작해야 하는데 종료 인덱스가 시작 인덱스보다 앞에 있기 때문에 뭐지.. 배열이 뒤집혀서 반환되나? 생각했었다.

그러나 완벽한 오산이었다. 빈 배열을 반환하게 된다.
시작 인덱스가 종료 인덱스 이후에 위치하면 유효한 범위에 속하는 아이템이 없기 때문에 빈 배열이 반환된다는 것이다.

생각해보니 배열이 뒤집히는 일은 일어날 수가 없다. 왜냐하면 배열을 뒤집는 메서드인 'reverse()'함수가 사용되지도 않았기 때문이다.

profile
내가 보려고 만들었습니당

0개의 댓글