티스토리 뷰
배열이란?
- 순서가 있는 값들의 집합. 자바스크립트 타입 중 하나
- 배열안의 값들은 요소(element). 그 요소들의 순서가 인덱스(index)
- 인덱스는 1아닌 0부터 시작하여 번호를 매김
- [ ]를 이용해 정의 하고 쉼표로 구분, 문자열이면 " "로 각 요소를 감싼다
- 대괄호에 인덱스 를 넣으면 해당 인덱스의 위치하는 요소를 확인,변경가능.
let numbers=[1,2,3,4,5,6];
console.log(numbers[3]); //4
numbers[3]=2
console.log(numbers[3]); //2
let strings=['a','ac','b','c'];
- 인덱스의 범위를 넘으면 undefind를 출력
- 배열안에 배열이 들어있는 이중 배열 가능. 문자열 배열은 기본적으로 이중배열.
let strings=["afr","asc","acv"];
let numbers=[[12,34],[34,13],[24,35]]//
strings[1][1]//asc의 s
배열의 메서드
1.isArray:배열인를 판별하는 메서드. 배열은 typeof를 하면 object(객체)로 반환하기에 필요. 빈 배열도 true반환
2.length:배열의 길이를 반환하는 메서드. 인덱스+1의 값 반환
3.push,pop: 배열의 맨 마지막 인덱스의 추가와 삭제를 담당하는 메서드.
4.unshift,shift:배열의 맨 처음 인덱스의 추가와 삭제를 담당하는 메서드.
5.indexOf:특정 값을 가진 요소가 어디 위치하는지를 찾는 메서드. 대소문자 구분.해당 요소가 들어있는 인덱스를 출력. 없다면 -1반환. 배열.indexOf("특정 ") !== -1로 특정값의 유무를 판별하는 조건문이 가능
6.include:특정 값을 가진 요소가 존재하는지를 true,false로 판별하는 메서드. indexOf보다 제한적고, 호환성이 낮기 때문에 사용이 권장되지않는다.
let numbers=[1,2,3,4,5];
Array.isArray(numbers); //true
numbers.length; //5
numbers.push(6);//마지막에 6추가
numbers.pop();//마지막에 6제거
numbers.unshift('0')//처음에 0추가
numbers.shift()//처음에 0제거
numbers.indexOf(2);//1
numbers.indexOf(7);//-1
numbers.include(2);//true
slice와 splice
- 배열을 다룰 때 가장 많이 사용되는 함수
- slice는 배열로 부터 특정 범위를 복사한 값들을 담고 있는 새로운 배열을 만드는데 사용
- 두개의 인자가 있고 각 인자는 시작 인덱스와 종료 인덱스를 의미. 단, 종료 인덱스는 복사에 포함되지 않음. 시작 인덱스부터 종료 인덱스까지 값을 복사하여 반환.
- 한개의 인자만 사용하면 해당 인덱스부터 끝까지 복사하고, 아무것도 없으면 전체를 복사한다.
let nums=[1,2,3,4,5,6,7];
nums.slice(3, 5) //4,5
nums.slice(4) //5,6,7
nums.slice() //1,2,3,4,5,6,7
- splice는 배열로 부터 특정 범위를 삭제하거나 새로운 값을 추가 또는 기존 값을 대체할 때 사용
- 3개의 인자가 있으며 각각 시작 인덱스,삭제할 값의 수, 추가할 가변인자를 의미. 실행 후 삭제된 값을 담고 있는 배열을 반환.
- 삭제할 값의 수를 의미하는 두번째 인자에 0를 넣어서 배열 중간에 값을 삽입하는 것이 가능
- 2개의 인자는 삭제만, 1개의 인자는 시작 인덱스부터 끝까지 삭제를 의미
- slice는 원본이 보존되지만 splice는 원본이 변형되는 차이가 존재
let nums=[1,2,3,4,5,6,7];
nums.splice(1, 2) //1,3,4,5,6,7
nums.splice(1, 0, -1,-2,-3) //1,-1,-2,-3,3,4,5,6,7
nums.splice(1, 3, 8,9,0) //1,8,9,0,3,4,5,6,7
nums.splice(3)//0,3,4,5,6,7
번외: 향상된 for
1.for in 문: for(변수 in 배열)로 구성되며 변수가 1씩 증가하면서 배열의 인덱스만큼 반복한다. 기존의 for문을 간략하게 만든것, 변수는 주로 인덱스로 사용된다
let arr = {a,b,c,d,e }
for (let i in school) {
console.log(arr[i]); abcde
}
2.for of문: for(변수 of 배열)로 구성되면 for in문과 비슷하지만, 변수에 배열의 요소들이 직접 저장된다는 점이 다르다. 또, prototype 속성 안에 들어있는 원소들은 제외하고 순수한 배열의 요소만 출력한다.
let arr=[a,b,c,d,e];
for(let i of arr) {
console.log(i); // abcde
}
댓글