/*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 |