배열 리터럴
const arr = ['a','b','c'] //a,b,c 는 요소라고 한다
Array 생성자 함수 , Array.of , Array.from메서드
//Array 생성자
const a = new Array(10) // 인수가 하나일때 ->[empty 10개] length = 10
const b = new Array() //[]
const c = new Array(1,2,3) //[1,2,3]
//Array.of
const a = Array.of(1) //[1]
const b = Array.of(1,2,3) //[1,2,3]
const c = Array.of('test') //['test']
//Array.from -> ES6에서 도입
const a = Array.from({length:2, 0 :'a', 1:'b'}) //['a','b']
const b = Array.from({length:n},()=>true) //[true,true...]
const c = Array.from('test') //['t','e','s','t'] -> 이터러블을 변환하여 배열로 생성한다
arr[0]object
const arr = [0]
arr[1] = 1 // arr[1]이 존재하지 않는 인덱스면 없으면 추가됨, 존재하는 인덱스 였으면 갱신됌
arr[50] = 50 // [0,1,empty...,50] 사이가 비어버림
const arr = [1,2,3]
//delete 연산자
delete arr[1] // [1,empty,3] // 앞으로 밀리는게 아니라 비어버림
//splice, slice
const spliced = arr.splice(삭제 시작인덱스, 삭제할 요소 갯수) //원본이 잘리고, 잘린 부분을 리턴한다.
const sliced = arr.slice(0,3) //0번부터 2번째 요소 까지 자름pushconst arr = [1]
arr.push(2) //[1,2]
pop()unshift()인수로 전달받은 모든 값을 원본 배열의 선두에 요소로 추가하고 변경된 length 프로퍼티 값을 반환한다.
const arr = [1,2]
const result = arr.unshift(3,4) //[3,4,1,2]
//스프레드 문법으로 구현하길 권장 [3,4,...arr]
shift()const arr = [1,2]
const result = arr.shift() //1,[2]splice()const arr = [1,2,3,4]
splice(start,deleteCount,items...)
const result = arr.splice(1,2) // 1, 2 요소 제거 시작 인덱스, 제거할 요소의 갯수
const result = arr.splice(-1,2) //start가 -1일 경우 마지막 요소 ,-n일 경우 마지막에서 n번째 요소
const result = arr.splice(1,2,20,30) //1번째 인덱스부터 2개 요소를 제거하고 그 자리에 새로운 요소 20, 30을 삽입한다.join()reverse()fill()flat()인수로 전달한 깊이만큼 재귀적으로 배열을 평탄화 한다.
[1,[2,3,[4,5]]].flat() //[1,2,3,[4,5]]
[1,[2,3,[4,5]]].flat(2) //[1,2,3,4,5]
[1,[2,3,[4,5]]].flat(Infinity) //[1,2,3,4,5] -> 끝까지 다 평탄화
concatconst arr = [1]
const result = arr.concat(2)
arr // [1]
result //[1,2]
Array.isArray()indexOf(n)전달한 배열에 인덱스를 반환한다
const arr = [1,2,2,3]
arr.indexOf(2) //1번 인덱스이므로 1
arr.indexOf(2,2) //2 2를 2번 인덱스부터 검색을 시작한다.
arr.indexOf(4) //없으므로 -1 반환
arr.includes(n)slice()const arr = [1,2,3,4]
const result = arr.slice(1,3) // arr[1]부터 arr[3-1]까지 복사하여 반환한다.arguments, HTMLCollection ,NodeList 같은 유사 배열 객체를 배열로 변환할 수 있다.고차함수 : 함수를 인수로 전달받거나 함수를 반환하는 함수를 말한다.
고차함수는 외부 상태의 변경이나 가변 데이터를 피하고 불변성을 지향하는 함수형 프로그래밍에 기반을 두고 있다.
함수형 프로그래밍은 순수 함수와 보조 함수의 조합을 통해 로직 내에 존재하는 조건문과 반복문을 제거하여 복잡성을 해결하고 변수의 사용을 억제하여 상태 변경을 피하려는 프로그래밍 패러다임이다.
sort()
유니 코드를 기준으로 정렬
숫자 요소를 정렬할때는 유니코드 코드 포인트가 숫자 순서가 아니기 때문에 정렬 순서를 정의하는 비교 함수를 인수로 전달해야 한다.
비교함수는 반환된 값이 양수, 음수, 0 인 것을 기준으로 정렬한다.
const arr = ['a','b','c']
arr.sort() //오름차순 정렬
//숫자 요소 정렬
const arr = [1,2,3,4]
arr.sort((a,b)=> a-b) //오름차순
arr.sort((a,b)=> b-a) //내림 차순
//객체 요소 정렬
const arr = [
{id:3,...},
{id:1,...},
{id:2,...},
]
arr.sort((a,b)=> (a[id] > b[id] ? 1 : (a[id] <b[id] ? -1: 0))
//a[id],b[id] 가 같으면 0
//a[id]가 크면 1
//b[id]가 크면 -1