13-8. Array 오브젝트(ES3 기준) / 엘리먼트 삭제
shift()
구분 | 데이터(값) |
---|---|
data | 대상 |
파라미터 | 사용하지 않음 |
반환 | 삭제한 엘리먼트 |
- 배열의 첫 번째 엘리먼트 삭제
삭제한 엘리먼트 값이 undefined로 남지 않고 완전히 삭제됨
length 값이 하나 줄어듬
var value = [1, 2, 34]; console.log(value.shift()); // 1 console.log(value); // [2, 34]
1번 인덱스인 2가 0번 인덱스로
2번 인덱스인 34가 1번 인덱스로 이동하였습니다.
하나씩 앞으로 당겨집니다.
빈 배열이면 undefined가 반환됨
var result = [].shift(); console.log(result); // undefined
pop()
구분 | 데이터(값) |
---|---|
data | 대상 |
파라미터 | 사용하지 않음 |
반환 | 삭제한 엘리먼트 |
- 배열의 마지막 엘리먼트 삭제
삭제한 엘리먼트 값이 undefined로 남지 않고 완전히 삭제됨
length 값이 하나 줄어듬
var value = [1, 2, 34]; console.log(value.pop()); // 34 console.log(value); // [1, 2]
빈 배열이면 undefined 반환
var result = [].pop(); console.log(result); // undefined
splice()
구분 | 데이터(값) |
---|---|
data | 대상 |
파라미터 | 첫번째 파라미터: 시작 인덱스, 디폴트 0 두번째 파라미터: 삭제할 엘리먼트 수 세번째 파라미터: 추가할 엘리먼트 [item1 [, item2 [, …]]]opt |
반환 | [결과] |
엘리먼트를 삭제하고 삭제한 엘리먼트 반환
var value = [1, 2, 3, 4, 5]; console.log(value.splice(1, 3)); // [2, 3, 4] console.log(value); // [1, 5]
- 1번 인덱스부터 엘리먼트 3개를 삭제
- 위의 엘리먼트가 앞으로 당겨집니다.
shift()
는 맨 앞을 삭제pop()
은 맨 뒤를 삭제splice()
는 중간을 삭제
splice
로도 첫번째와 마지막을 삭제할 수 있지만 시멘틱 차원에서 shift
, pop
을 사용하는 것이 좋다.
delete
와 달리 undefined
를 설정하지 않고 배열의 전체를 삭제할 수 있다.
삭제한 위치에 세번째 파라미터 삽입
var value = [1, 2, 3, 4, 5]; console.log(value.splice(1, 3, "A", "B")); // [2, 3, 4] console.log(value); // [1, "A", "B", 5]
파라미터를 작성하지 않으면?
var value = [1, 2, 3, 4, 5]; console.log(value.splice()); // [] console.log(value); // [1, 2, 3, 4, 5]
- 삭제하지 않습니다.
- 삭제한 것이 없으므로 빈 배열 반환
시작 인덱스의 디폴트 값은 0입니다.
그래서 0번부터 지우려고 하는데, 몇 개를 지우라는 건지는 모릅니다.
그래서 안 지웁니다.