자바스크립트의 언어 특성상, 배열도 자유자재로 다룰 수 있고,
자바스크립트의 배열은 다양하고 역동적이고, 자유로운 영혼이다.
배열 선언
var arrTemp = new Array();
var arrTemp = []; |
자바스트립트의 배열을 선언하는 방법은 Array() 객체를 가지고 만드는 방법과,
이를 단순히 [] 만으로도 선언할 수 있다.
이는 객체를 만들때 new Object() 로 만들거나 {} 로 만들수 있는것과 같은 이치이다.
위의 배열 선언문은 사이즈가 0인 배열이었고,
아래와 같이 하면 배열의 사이즈를 줄 수 있다.
var arrTemp = new Array(5);
var arrTemp = [,,,,,]; |
위 예제는 모두 사이즈가 5개인 배열을 만들었다.
new Array() 즉,
일반적인 랭귀지와 달리 자바스크립트의 배열은 Array 라는 객체라는 것을 알 수 있다.
즉, Array 도 Object 인 것이다.
Array 의 prototype 을 보면, 자바스트립트의 Array 로 무엇을 할 수 있는지 알 수 있다.
length 라는 속성외에는 전부 함수로 구성되어 있다는것을 알 수 있다.
데이터 탐색
배열에 대한 데이터 탐색은 모든 언어가 아래와 같이 사용하는것이 일반적이다.
for(var i=0; i < arrTemp.length; i++)
{
console.log(arrTemp[i]);
}
이를 forEach 문으로 바꾸면 아래와 같이 쓸 수 있다.
arrTemp.forEach(function(d) { console.log(d) } );
이를 람다식으로 쓰면 아래와 같다.
arrTemp.forEach( d => console.log(d) );
큐(Queue)
자료구조에서 큐는 FIFO 로써, 먼저 들어간 데이터 먼저 나온다는 뜻이다.
[배열의 맨뒤에 데이터를 입력]
arrTemp.push('test');
[배열의 첫번째 데이터를 꺼내온다. (꺼내온 데이터는 삭제됨)]
console.log(arrTemp.shift());
스택(Stack)
스택은 LIFO 로써, 제일 나중에 들언간 데이터가 먼저 나온다는 뜻이다.
[배열의 맨뒤에 데이터를 입력]
arrTemp.push('test');
[배열의 마지막 데이터를 꺼내온다. (꺼내온 데이터는 삭제됨)]
console.log(arrTemp.pop());
배열에 데이터 입력
큐/스택의 예에서 처럼 배열의 맨뒤에 데이터를 입력하는 함수는 push 이다.
[배열의 맨뒤에 데이터를 입력]
arrTemp.push('test');
[배열의 맨앞에 데이터를 입력]
arrTemp.unshift('test');
[배열의 중간에 데이터를 입력]
arrTemp.splice(1, 0, 'add')
1은 데이터를 삽입할 index 이고, 0은 삭제할 count 이기 때문에, 0으로 입력하여 삭제하지 않도록 한것이다.
배열의 데이터 삭제
큐/스택의 예에서 처럼, 배열의 첫번째 삭제시는 shift() 함수를 쓰면 된다.
마지막 데이터삭제는 pop() 함수를 쓰면 된다.
[중간의 데이터 삭제는 splice 를 사용하면 된다.]
arrTemp.splice(1, 3)
배열의 index 1번 부터 시작해서, 3개의 배열항목을 삭제한다.
좀 더 심화된 자바스크립트 배열을 사용하고 싶다면, 아래 내용을 참고하면 될 것이다.
변경자 메서드
- copyWithin() 배열 내의 지정된 요소들을 동일한 배열 내에서 복사합니다. - fill() 배열 안의 시작 인덱스부터 끝 인덱스까지의 요소값을 지정된 정적 값으로 채웁니다. - pop() 배열에서 마지막 요소를 뽑아내고, 그 요소를 반환합니다. - push() 배열의 끝에 하나 이상의 요소를 추가하고, 변경된 배열의 길이를 반환합니다. - reverse() 배열의 요소 순서를 반전시킵니다. 첫 번째가 마지막이 되고 마지막이 첫 번째가 됩니다. - shift() 배열에서 첫 번째 요소를 삭제하고 그 요소를 반환합니다. - sort() 배열의 요소를 정렬하고 그 배열을 반환합니다. - splice() 배열에서 요소를 추가/삭제합니다. - unshift() 배열의 앞에 하나 이상의 요소를 추가하고 새로운 길이를 반환합니다. |
접근자 메서드
- concat() 배열을 매개변수로 주어진 배열/값과 이어붙인 새로운 배열을 반환합니다. - filter() 지정한 콜백의 반환 결과가 true인 요소만 모은 새로운 배열을 반환합니다. - includes() 배열이 주어진 값을 포함하는지 판별해 true 또는 false를 반환합니다. - indexOf() 배열에서 주어진 값과 일치하는 제일 앞의 인덱스를 반환합니다. 없으면 -1을 반환합니다. - join() 배열의 모든 요소를 문자열로 합칩니다. - lastIndexOf() 배열에서 주어진 값과 일치하는 제일 뒤의 인덱스를 반환합니다. 없으면 -1을 반환합니다. - slice() 배열의 일부를 추출한 새 배열을 반환합니다. - toSource() 지정한 배열을 나타내는 배열 리터럴을 반환합니다. 새로운 배열을 만들기 위해 이 값을 사용할 수 있습니다. Object.prototype.toSource() 메서드를 재정의합니다. - toString() 배열과 그 요소를 나타내는 문자열을 반환합니다. Object.prototype.toString() 메서드를 재정의합니다. - toLocaleString() 배열과 그 요소를 나타내는 지역화된 문자열을 반환합니다. Object.prototype.toLocaleString() 메서드를 재정의합니다. |
순회 메서드
- entries() 배열의 각 인덱스에 대한 키/값 쌍을 포함하는 새로운 배열 반복자 객체를 반환합니다. - every() 배열의 모든 요소가 주어진 판별 콜백을 만족할 경우 true를 반환합니다. - find() 주어진 판별 콜백을 만족하는 첫 번째 요소를 반환합니다. 만족하는 요소가 없으면 undefined를 반환합니다. - findIndex() 주어진 판별 콜백을 만족하는 첫 번째 요소의 인덱스를 반환합니다. 만족하는 요소가 없으면 undefined를 반환합니다. - forEach() 배열의 각각의 요소에 대해 콜백을 호출합니다. - keys() 배열의 각 인덱스에 대한 키를 가지는 새로운 배열 반복자 객체를 반환합니다. - map() 배열의 모든 요소 각각에 대하여 주어진 콜백 함수를 호출하고, 그 반환값을 모은 새로운 배열을 반환합니다. - reduce() 주어진 콜백 함수를 가산기와 요소 각각에 대해 왼쪽에서 오른쪽으로 호출하여 하나의 값으로 줄인(reduce) 결과를 반환합니다. - reduceRight() 주어진 콜백 함수를 가산기와 요소 각각에 대해 오른쪽에서 왼쪽으로 호출하여 하나의 값으로 줄인(reduce) 결과를 반환합니다. - some() 배열의 어떤 요소가 주어진 판별 콜백을 만족할 경우 true를 반환합니다. - values() 배열의 각 인덱스에 대한 값을 가지는 새로운 배열 반복자 객체를 반환합니다. |
'개발팁' 카테고리의 다른 글
[CSS] 정적 이미지에 생명력을 넣는 방법 - 동적으로 커지는 이미지 (0) | 2021.03.18 |
---|---|
자바스크립트 라이브러리 underscore.js (0) | 2020.08.27 |
텔레그램으로 봇파더 BotFather 토큰 생성하기 (18) | 2020.03.20 |
자바스크립트 javascript 로 string.format 함수 만들기 (1) | 2020.03.03 |
자바스크립트 (vue.js) 다이나믹 고정레이어 구현하기 (0) | 2020.02.16 |