[JavaScript] 자바스크립트 배열 (Array )과 배열을 다루는 메소드
- 웹/자바스크립트
- 2021. 7. 13.
JAVASCRIPT / ARRAY
JavaScript에서 배열 사용
배열은 기본적으로 Object Type이다.
자바스크립트에서 배열을 생성하는 방법은 두 가지가 있다.
1. [] 를 사용
2. Array() 생성자를 사용
배열 선언하기 예제
1. [] 로 생성하는 방법
// 1 배열 생성후 값 할당
var arr = [];
arr[0] = '0';
arr[1] = '1';
arr[2] = '2';
// 2 초기값 할당
var arr = ['0','1','2'];
// 3 배열 크기 지정(쉼표 갯수만큼)
var arr =[,,,]
2. Array() 생성자로 생성하는 방법
// 1 배열 생성후 값 할당
var arr2 = new Array();
arr[0] = '0';
arr[1] = '1';
arr[2] = '2';
// 2 초기값 할당
var arr2 = new Array('0','1','2');
// 3 배열 크기 지정 (숫자만큼)
var arr2 = new Array(3);
배열 값 출력하기 예제
console.log(arr[1]);
console.log(arr2[2]);
for(i = 0; i < arr.length; i++){
console.log(arr[i]);
}
배열에 값이 들어있지 않은 상태면 undefined가 출력 된다.
배열을 다루는 메소드
자바스크립트에서 배열의 값을 좀 더 편하게 수정,추가,삭제 등을 할 수 있도록 해주는 메소드들이 있다.
메소드 | 기능 |
arr.toString() | 배열 구조를 문자열로 반환 |
arr.join(separator) | 원하는 구분자로 이어붙혀 문자열로 반환 |
arr.pop() | 맨 뒤의 값을 제거하면서 반환한다. |
arr.shift() | 맨 앞의 값을 제거하면서 반환한다. |
arr.push() | 맨 뒤에 값을 추가 |
arr.unshift() | 맨 앞에 값을 추가 |
arr.concat(arr) | 배열끼리 이어 붙힌다 |
slice() | 배열을 자른다. |
splice() | 배열을 자르면서 원하는 값을 넣을 수 있다. |
sort() | 배열을 정렬한다(기본적으로 문자열기준 정렬) |
reverse() | 배열의 순서를 거꾸로 바꾼다 (정렬기능 X) |
예제
const coffees = ['아메리카노', '라떼', '모카', '마끼아또', '그린티'];
const snacks = ['초코쿠키', '민초쿠키', '호두파이'];
join()
arr.join('str')
console.log(coffees.join("/")); // 아메리카노/라떼/모카/마끼아또/그린티
console.log(typeof coffees.join("/")); // String
원하는 구분자로 이어 붙혀 문자열로 반환한다. 배열의 형태가 Object -> String으로 바뀐다.
pop()
arr.pop()
console.log(coffees.pop());
console.log(coffees); // ["아메리카노", "라떼", "모카", "마끼아또"]
맨 뒤의 값을 제거하면서 반환한다 (제거된 요소 반환)
["아메리카노", "라떼", "모카", "마끼아또", "그린티"] -> ["아메리카노", "라떼", "모카", "마끼아또"]
shift()
arr.shift()
console.log(coffees.shift());
console.log(coffees); // ["라떼", "모카", "마끼아또"]
맨 앞의 값을 제거하면서 반환한다.
["아메리카노", "라떼", "모카", "마끼아또"] -> ["라떼", "모카", "마끼아또"]
push()
arr.push(value)
// coffees.pop() = 마끼아또 ( 꺼내면서 추가했기 때문에 값의 변화는 없다.)
coffees.push(coffees.pop());
console.log(coffees);
맨 뒤에 값을 추가한다.
["라떼", "모카", "마끼아또"] -> ["라떼", "모카", "마끼아또"]
(마끼아또를 pop()으로 꺼낸뒤 push())
unshift()
arr.unshift()
console.log('아아를 추가한 뒤 coffees의 length : ',
coffees.unshift('아이스아메리카노')); // 4
맨 앞에 값을 추가하고 추가된 배열의 길이를 반환한다.
["라떼", "모카", "마끼아또"] -> ["아이스아메리카노", "라떼", "모카", "마끼아또"]
concat()
arr.concat(arr2)
const menu = coffees.concat(snacks);
console.log(menu); // ["아이스아메리카노", "라떼", "모카", "마끼아또", "초코쿠키", "민초쿠키", "호두파이"]
배열끼리 이어 붙힌다.
["아이스아메리카노", "라떼", "모카", "마끼아또"] + ["초코쿠키", "민초쿠키", "호두파이"]
slice()
arr.slice(start_idx, end_idx)
console.log(menu.slice(5)); // ["민초쿠키", "호두파이"]
console.log(menu.slice(2,5)); // ["모카", "마끼아또", "초코쿠키"]
원하는 시작인덱스부터 끝인덱스 -1 까지 배열을 자른다.
끝인덱스를 생략하면 끝까지 자른다.
1. ["아이스아메리카노", "라떼", "모카", "마끼아또", "초코쿠키", "민초쿠키", "호두파이"]
-> ["민초쿠키", "호두파이"]
2. ["아이스아메리카노", "라떼", "모카", "마끼아또", "초코쿠키", "민초쿠키", "호두파이"]
-> ["모카", "마끼아또", "초코쿠키"]
splice()
splice(index_to_add, num_of_remove, 넣고싶은 값들 . .)
console.log(menu);
//["아이스아메리카노", "라떼", "모카", "마끼아또", "초코쿠키", "민초쿠키", "호두파이"]
menu.splice(2, 2, "키위","오렌지");
console.log(menu);
//["아이스아메리카노", "라떼", "키위", "오렌지", "초코쿠키", "민초쿠키", "호두파이"]
splice(2, 2, "키위", "오렌지") -> idx 2부터 2개의 요소를 제거한 뒤 키위,오렌지를 추가한다
["아이스아메리카노", "라떼", "모카", "마끼아또", "초코쿠키", "민초쿠키", "호두파이"]
-> ["아이스아메리카노", "라떼", "키위", "오렌지", "초코쿠키", "민초쿠키", "호두파이"]
sort()
arr.sort()
menu.sort();
console.log(menu);
//["라떼", "민초쿠키", "아이스아메리카노", "오렌지", "초코쿠키", "키위", "호두파이"]
기본적으로 문자열 기준 오름차순 정렬을 한다. (JS의 Comparator가 기본 문자열 기준)
ex > 나 가 다 -> 가 나 다
숫자를 정렬할 경우 문자열과 동일한 방법으로 정렬한다.
ex > 1, 3 , 23, 10 -> 1 , 10, 23, 3
숫자를 정렬 할 경우 숫자타입 Comparator를 정의해야 한다.
// 오름차순
const numbers = [100, 21, 25, 1, 3, 88, 91];
numbers.sort() // 1, 100, 21, 25, 3, 88, 91
numbers.sort(function (a, b) {
return a - b;
});
// 내림차순
const numbers = [100, 21, 25, 1, 3, 88, 91];
numbers.sort() // 1, 100, 21, 25, 3, 88, 91
numbers.sort(function (a, b) {
return a - b;
});
sort()의 매개변수로 Comparator기능을 하는 함수를 생성하서 전달한다.
오름 -> 내림, 내림 -> 오름으로 정렬하고 싶은 경우 새로운 Comparator를 정의하지 않고
현재 기준 reverse()를 하면 된다.
reverse()
arr.reverse()
menu.reverse();
console.log(menu);
// ["호두파이", "키위", "초코쿠키", "오렌지", "아이스아메리카노", "민초쿠키", "라떼"]
존재하는 배열의 순서만 거꾸로 바꾼다 (정렬기능 X)
delete
delete arr[idx]
delete coffees[2];
// ["아이스아메리카노", "라떼", empty, "마끼아또"]
["아이스아메리카노", "라떼", "모카", "마끼아또"] -> ["아이스아메리카노", "라떼", empty, "마끼아또"]
배열의 요소를 삭제한다. 삭제된 요소의 index까지 삭제되는게 아니라 empty로 공백을 남겨두고 자리는 차지한다.
'웹 > 자바스크립트' 카테고리의 다른 글
[JavaScript] forEach 함수 (0) | 2021.07.16 |
---|---|
[JavaScript] BOM(Browser Object Model) 브라우저 객체 모델 (0) | 2021.07.15 |
[JavaScript] 자바스크립트 숫자 타입 메소드 (0) | 2021.07.13 |
[JavaScript] 자바스크립트 문자열 메소드 (0) | 2021.07.13 |
[JavaScript] Node 객체 (0) | 2021.07.12 |