new Array()
,[]
배열을 사용해 만들 수 있는 자료구조로, 순서가 있는 컬렉션이다.
(프링글스통)
맨 끝 요소 추가
제일 앞 요소를 꺼내 제거한 후 남아있는 요소를 앞으로 밀어준다.
pop(0) 과 동일
한쪽 끝에 요소를 더하거나 뺄 수 있는 구조
(바닥의 종이들)
동일
스택 끝 요소를 추출
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 (let fruit of fruits) {
alert(fruit);
}
for..of를 사용하면 현재 요소의 인덱스는 얻을 수 없고 값만 얻을 수 있다.
String([1,2,3])
=> '1,2,3'
alert([1,2,3])
=> '1,2,3'
splice 는 CRUD 가 모두 가능하다.
사용법을 익혀보자.
arr.splice(index,delCount, ele,ele2)
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];
arr.slice(start,end)
start 부터 end 인덱스의 값 까지 요소를 복사한 후 새로운 배열을 반환한다.
end 를 생략하면 끝까지이다.
둘다 적지 않으면 배열 그대로를 반환해서 복사본으로 사용하기 좋다.
기존 배열의 요소를 사용해 새로운 배열을 만들거나 요소를 추가할 수 있다.
let arr = [];
let a = arr.concat("d우에에엥");
(arr) => [];
(a) => ["d우에에엥"];
find 메서드는 함수의 반환 값을 true로 만드는 단 하나의 요소를 찾는다.
그와 비슷하게 filter는 조건을 충족하는 여러 요소를 찾는데 파라미터 안에 함수를 넣으면 된다.
let someUsers = users.filter(item => item.id < 3)
map은 배열 요소 전체를 대상으로 함수를 호출해, 함수 호출 결과를 배열로 반환한다.
let lengths = ["Bilbo", "Gandalf", "Nazgul"]
a = lengths.map(item => item.length)
a=> [5,6,7]
arr의 요소를 역순으로 정렬시켜준다.
어떠한 값으로 문자열을 리스트로 나눈다.
let names = 'Bilbo, Gandalf, Nazgul';
names.split(', ') => [Bilbo, Gandalf, Nazgul]
파라미터를 생략하면 모든 문자열을 한글자씩 나눈다.
요소를 차례로 돌면서 func을 호출함.
반환값은 다음 함수 호출에 전달함. 최종적으로 하나의 값이 도출됨
start부터 end까지 value를 채워 넣는다.