[JS] 5-2. 배열

heyhey·2023년 2월 27일
0

JavaScript

목록 보기
11/14

배열

  • 배열 만들기
    new Array(),[]

queue


배열을 사용해 만들 수 있는 자료구조로, 순서가 있는 컬렉션이다.
(프링글스통)

push

맨 끝 요소 추가

shift

제일 앞 요소를 꺼내 제거한 후 남아있는 요소를 앞으로 밀어준다.
pop(0) 과 동일

stack


한쪽 끝에 요소를 더하거나 뺄 수 있는 구조
(바닥의 종이들)

push

동일

pop

스택 끝 요소를 추출
pop() 과 동일

배열의 동작 원리


arr[0] 처럼 대괄호를 사용해 접근하는 방식은 객체 문법에서 왔다.
배열은 그것이 숫자라는 점에서만 다르다.

배열의 요소를 인접한 메모리 공간에 차례로 저장해 연산속도를 높인다.

배열을 일반 객체처럼 다루면

이러한 형태도 가능하다

let a = []
a[2] = 2
a => [undefined,undefined,2]
a['hi'] = 'hi' =>[undefined,undefined,2,hi:'hi']

하지만 임의의 키를 사용해야한다면, 배열보다 객체가 적합할 것이다,

성능

  • push와 pop은 빠르지만 shift와 unshift는 느리다.

  • 배열의 맨뒤에서 뭔가를 히는 것보단 앞에서 하는 것이 느리다..

  • 배열에 요소가 많으면 요소가 이동하는 데 걸리는 시간이 길고 메모리 관련 연산도 많아집니다.

for

for (let fruit of fruits) {
  alert(fruit);
}

for..of를 사용하면 현재 요소의 인덱스는 얻을 수 없고 값만 얻을 수 있다.

toString()

String([1,2,3]) => '1,2,3'
alert([1,2,3]) => '1,2,3'

요소 추가 제거 매서드

  • arr.push()
  • arr.pop()
  • arr.shift()
  • arr.unshift() - 맨 앞 요소 추가

splice

splice 는 CRUD 가 모두 가능하다.
사용법을 익혀보자.

arr.splice(index,delCount, ele,ele2)

  • index : 시작인덱스
  • delCount : 제거하고자 하는 요소 개수
  • ele : 배열에 추가할 요소

삭제하기

0번 인덱스부터 2개 제거하기

arr.splice(0, 2);

추가하기

2번 인덱스부터 0개를 제거한 후 '1','2' 추가하기

let arr = [0, 1, 2, 3];
arr.splice(2, 0, "1", "2");
(arr) => [0, 1, "1", "2", 2, 3];

slice


arr.slice(start,end)
start 부터 end 인덱스의 값 까지 요소를 복사한 후 새로운 배열을 반환한다.

end 를 생략하면 끝까지이다.

둘다 적지 않으면 배열 그대로를 반환해서 복사본으로 사용하기 좋다.

concat


기존 배열의 요소를 사용해 새로운 배열을 만들거나 요소를 추가할 수 있다.

let arr = [];
let a = arr.concat("d우에에엥");
(arr) => [];
(a) => ["d우에에엥"];

filter()


find 메서드는 함수의 반환 값을 true로 만드는 단 하나의 요소를 찾는다.
그와 비슷하게 filter는 조건을 충족하는 여러 요소를 찾는데 파라미터 안에 함수를 넣으면 된다.
let someUsers = users.filter(item => item.id < 3)

map()


map은 배열 요소 전체를 대상으로 함수를 호출해, 함수 호출 결과를 배열로 반환한다.

let lengths = ["Bilbo", "Gandalf", "Nazgul"]
a = lengths.map(item => item.length) 
a=> [5,6,7]

reverse


arr의 요소를 역순으로 정렬시켜준다.

split


어떠한 값으로 문자열을 리스트로 나눈다.

let names = 'Bilbo, Gandalf, Nazgul';
names.split(', ') => [Bilbo, Gandalf, Nazgul]

파라미터를 생략하면 모든 문자열을 한글자씩 나눈다.

reduce(func, initial)

요소를 차례로 돌면서 func을 호출함.
반환값은 다음 함수 호출에 전달함. 최종적으로 하나의 값이 도출됨

arr.fill(value, start, end)

start부터 end까지 value를 채워 넣는다.

profile
주경야독

0개의 댓글