'Object'에 해당되는 글 1건

  1. 2020.07.30 자바스크립트 배열 자료구조 다루기
개발팁2020. 7. 30. 17:05

자바스크립트의 언어 특성상, 배열도 자유자재로 다룰 수 있고,

자바스크립트의 배열은 다양하고 역동적이고, 자유로운 영혼이다.

 

 

 

배열 선언

 

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()
배열의 각 인덱스에 대한 값을 가지는 새로운 배열 반복자 객체를 반환합니다.

 

 

 

Posted by 헝개