본문 바로가기
javascript

Array 오브젝트 엘리먼트 삭제

by rami_ 2021. 11. 14.
/*var value = [101, 26, 7, 1234];배열의 엘리먼트 값을 역순으로 정렬
1.배열 만들기 2. sort 이용하기 3. 역순배열하기(two-one)*/

'use strict'

value = [];

var value = [101, 26, 7, 1234];

value.sort(function(one, two){
	return two - one;
});

console.log(value);

shift()

구분 데이터(값)
data 대상
파라미터 사용하지 않음
반환 삭제한 엘리먼트

배열의 첫번째 엘리먼트 삭제

삭제한 엘리먼트 값이 undefined로 남지 않고 완전히 삭제됨

length 값이 하나 줄어듬.

var value = [1, 2, 34];

log(value.shift()); //1 삭제한 엘리먼트 반환

log(value); //[2, 34]

빈배열이면 undefined가 반환됨.

var result = [].shift();

log(result); //undefined

 

pop()

구분 데이터(값)
data 대상
파라미터 사용하지 않음
반환 삭제한 엘리먼트

배열의 마지막 엘리먼트 삭제

삭제한 엘리먼트 값이 undefined로 남지 않고 완전히 삭제됨

length값이 하나 줄어듬.

var value = [1, 2, 34];

log(value.pop()); //34

log(value; //[1, 2]

빈 배열이면 undefined 반환

var result=[].pop(); 

log(result); //undefined

 

splice()

구분 데이터(값)
data 대상
파라미터 시작 인덱스, 디폴트 : 0
삭제할 엘리먼트 수
추가할 엘리먼트 : [item1, [, ..]]] opt
반환 [결과]

엘리먼트를 삭제하고 삭제한 엘리먼트 반환

var value = [1, 2, 3, 4, 5];

log(value.splice(1, 3)); // [2, 3, 4]

log(value); //[1,5]

삭제한 위치에 세번째 파라미터 삽입

var value [1, 2, 3, 4, 5];

log(value.splice(1, 3, "A", "B")); //[2,3,4]

log(value); //첫번째 인덱스부터 3번째 인덱스까지 삭제(2,3,4) 이후 "A", "B" 삽입. [1, A, B, 5] 

파라미터를 작성하지 않으면?

var value = [1, 2, 3, 4, 5];

log(value.splice()); //[]

log(value); // [1, 2, 3, 4, 5]

 

sort 분류

 

sort()

구분 데이터(값)
data 대상
파라미터 함수opt
반환 sort 결과

엘리먼트 값을 승순으로 정렬

정렬기준은 엘리먼트 값의 Unicode

 코드포인트가 작으면 앞에 오고 크면 뒤에 옵니다

var value = [4, 2, 3, 1];

log(value.sort()); //[1, 2, 3, 4]

var value = ["A1", "A01", "B2", "B02"];

log(value.sort()); // [A01, A1, B02, B2]

주의 : sort 대상 데이터 배열도 정렬됨

var value = [4, 2, 3, 1];

log(value.sort()); // [1, 2, 3, 4]

log(value); // [1, 2, 3, 4]

값이 undefined면 끝으로 이동

var value = [ , , 1, 2];

log(value.sort()); //[1, 2, undefined, undefined]

 

sort() 와 Unicode

숫자에 해당하는 Unicode의 code point로 정렬

var value = [101, 26, 7, 1234];

log(value.sort()); //[101, 1234, 26, 7] 코드포인트로 비교해 sort함. 101과 26에서 1이 2보다 작으므로 101이 26보다 작은것으로 정렬. 이를 해결하려면 sort()의 파라미터에 함수를 작성하고 함수에서 정렬해야함.

 

 

sort 알고리즘

var value = [101, 26, 7, 1234];

value.sort(function(one, two) {

 return one - two;

});

log(value); //[7, 26, 101, 1234] one, two파라미터에 101과 26이 들어가고 빼면 양수가 됨. 0보다 큰 값이 반환되면 배열에서 값으 ㅣ위치를 바꾸게 됨. [26, 101, 7, 1234]가 되고 다시 콜백 함수를 호출하면서 101과 7를 넘겨주게 되고 둘을 빼주면 양수이며 이 값을 반환함. 0보다 큰 값을 반환하게되므로 배열에서 값의 위치를 바꿈. [26, 7, 101, 1234] 다시 함수를 호출하면서 101과 1234를 넘겨주고 결과는 음수이므로 0보다 작은 값을 반환하게 됨. 반환 값이 0보다 작거나 같으면 배열에서 값의 위치는 바꾸지 않음. 따라서 [26, 7, 101, 1234] 다시 처음으로 돌아가 바뀌는 것이 없을 때까지 배열의 엘리먼트 위치를 조정함. 뺐을 때 양수면 자리를 바꾸고 음수이면 그대로 둠.

역순으로 배열하려면 two-one을 해주면됨.

 

 

'javascript' 카테고리의 다른 글

기본개념1  (0) 2022.01.06
Array 오브젝트 reverse()  (0) 2021.11.14
배열과 관련된 문제풀이  (0) 2021.11.11
Array 오브젝트 엘리먼트 값을 문자열로 변환  (0) 2021.11.11
Array 오브젝트 엘리먼트 삽입, 첨부  (0) 2021.11.04