[javascript] Array
Array Dictionary
· Array method
Array()
Array 객체를 생성한다.
let arr = new Array() // return 빈 array 객체
let arr = new Array(num) // return 길이가 num 인 객체
let arr = new Array('A', 'B', 'C') // reutn ['A', 'B', 'C']
let arr = ['A', 'B', 'C'] // reutn ['A', 'B', 'C'] 위 방식과의 차이점은 없다.
Array.from()
반복가능한 객체를 배열로 만든다.
Array.from('abc') // return ['a', 'b', 'c']
배열 내 각 요소에 계산식을 실행한 후 배열로 반환한다.
Array.from([1, 2, 3], x => x + x); // return [2, 4, 6]
Array.isArray()
매개변수가 배열일 경우 True, 배열이 아닐 경우 False를 반환한다.
Array.isArray([1,2,3]) // return true
Array.isArray(123) // return false
Array.of()
매개변수를 요소로 갖는 배열을 반환한다.
Array.of(7) // return [7]
Array.of(['A', 'B', 'C']) // reutn ['A', 'B', 'C']
· Array instance property
Array.prototype.length
배열의 원소 수
Array('A', 'B', 'C').length // return 3
· Array instance method
Array.prototype.at()
인덱스를 받아 값을 반환한다.
Array('A', 'B', 'C').at(0) // return A
Array('A', 'B', 'C').at(-1) // return C ▶ 매개변수가 음수일 경우 가장 마지막 값을 반환한다.
Array.prototype.concat()
매개변수로 받은 값을 병합한 값을 반환한다.
Array('A', 'B', 'C').concat('D') // return ['A', 'B', 'C', 'D']
Array('A', 'B', 'C').concat(['D', 'E']]) // return ['A', 'B', 'C', 'D', 'E']
Array.prototype.copyWithin()
배열 내 값을 복사하여 특정 위치에 붙여넣은 값을 반환한다.
Array().copyWithin(target, start, end)
// target: 붙여넣을 위치의 인덱스
// start: 복사를 시작할 위치의 인덱스 Default 0
// end: 복사를 끝낼 위치의 인덱스 Default Array의 length
Array(1, 2, 3, 4, 5).copyWithin(-1)
// return [1, 2, 3, 4, 1] → Index 0~length 복사한 후 -1 index(배열의 마지막 index)에 붙여넣기
Array(1, 2, 3, 4, 5).copyWithin(0, 2, 3)
// return [3, 2, 3, 4, 5] → Index 2~3(즉, 2) 복사한 후 0 index에 붙여넣기.
Array.prototype.entries()
인덱스와 값을 각각 키와 값의 쌍으로 가지는 Iterator 객체를 반환한다. 주로 반복문과 함께 사용된다.
for (let [index, element] of Array('A', 'B').entries())
console.log(index, element);
// 0 'A'
// 1 'B'
for (let e of Array('A', 'B').entries())
console.log(e);
// [0, 'A']
// [1, 'B']
Array.prototype.keys()
인덱스를 갖는 Iterator 배열을 반환한다. 주로 반복문과 함께 사용된다.
for(let index of Array('A', 'B').keys())
console.log(index)
// 0
// 1
Array.prototype.values()
값을 갖는 Iterator 배열을 반환한다. 주로 반복문과 함께 사용된다.
for(let element of Array('A', 'B').values())
console.log(element)
// 'A'
// 'B'
⭐ Array.prototype.forEach()
각 요소 마다 지정된 함수를 실행한다.
Array('A','B','C').forEach(e => console.log(e)) // console 출력 'A', 'B', 'C'
Array('A','B','C').forEach((e, i) => console.log(e, i)) // console 출력 'A' 0, 'B' 1, 'C' 2
※ (e, i) => e = e + 1
과 같이 원본을 변경하는 수식은 적용되지 않는다.
Array.prototype.every()
배열 내 모든 요소가 판별식을 만족하는지 반환한다.
Array(1, 2, 3).every(value => value < 10) // true ▶ 조건식 "value < 10"
let f_test = value => value < 10
Array(1, 2, 3).every(f_test) // true ▶ 위와 같은 조건식, 형태만 다름
Array.prototype.some()
배열 내 일부 요소가 조건식을 만족하는지 반환한다.
Array(1, 2, 3).some(value => value == 1) // true
Array(1, 2, 3).some(value => value == 4) // false
Array.prototype.fill()
값 하나로 배열을 채워 반환한다.
Array().fill(value, start, end)
// value: 붙여넣을 값
// start: 붙여넣기를 시작할 위치의 인덱스 Default 0
// end: 붙여넣기를 끝낼 위치의 인덱스 Default Array의 length
Array(1, 2, 3).fill(6) // return [6, 6, 6]
Array(1, 2, 3).fill(6, 1) // return [1, 6, 6]
⭐ Array.prototype.filter()
조건에 맞는 값들을 배열로 반환한다.
Array(1, 3, 5, 7).filter(element => element > 3) // return [5, 7]
// reserve가 array 일 때 아래와 같은 식으로 B를 제거 할 수 있다.
reserve = reserve.filter(r => r !== b)
Array.prototype.find()
조건에 맞는 첫번째 값을 반환한다.
Array(1, 3, 5, 7).find(element => element > 3) // return 5
Array.prototype.findIndex()
조건에 맞는 첫번째 값의 인덱스를 반환한다.
Array(1, 3, 5, 7).findIndex(element => element > 3) // return 2
Array.prototype.flat()
내부 배열을 포함하는 새 배열을 반환한다.
arr.flat(dept)
// dept : 평탄화 할 배열의 깊이 default : 1
let arr = ['A', 'B', ['C', 'D']]
arr.flat() // return ['A', 'B', 'C', 'D']
let arr = ['A', 'B', [[['C', 'D']]]]
arr.flat(2) // return ['A', 'B', ['C', 'D']]
⭐ Array.prototype.Map()
콜백 함수를 각 요소에 적용한 배열을 반환한다.
Array(1, 2, 3).map(e => e + 1) // return [2, 3, 4]
Array([0, 1], [0, 2], [0, 3]).map(([a,b]) => [b,a]) // return [[1, 0], [2, 0], [3, 0]]
Array.prototype.flatMap()
콜백 함수를 각 요소에 적용한 후 결과를 한 수준 평탄화한 배열을 반환한다.
// flatMap((value, index, array) => { /* … */ } )
// value : 현재 실행중인 value
// index : 현재 실행중인 index
let str = ["Victory belongs", "to the", "most persevering"];
str.map((e) => e.split(" ")) // return [["Vivtory", "belongs"], ["to", "the"], ["most", "persevering"]]
str.flatMap((e) => e.split(" ")); // return ['Victory', 'belongs', 'to', 'the', 'most', 'persevering']
Array.prototype.includes()
매개변수가 배열 내 포함되어있는지 반환한다.
Array('A', 'B', 'C').includes('A') // return true
Array.prototype.indexOf()
매개변수로 값을 받아 검색 후 처음 검색 결과의 Index를 반환한다. 검색결과가 없을 경우 -1을 반환한다.
// indexOf(searchKey, start)
// searchKey : 검색할 값, start : 검색을 시작할 index
let arr = ['A', 'B', 'C', 'D', 'E']
arr.indexOf('A') // return 0
arr.indexOf('A', 1) // return -1 'A'는 0번에 있으나, 1번부터 검색하기때문에 검색결과 없음.
Array.prototype.join()
배열을 병합하여 문자열(string)로 반환한다.
let arr = ['010','1234','5678']
arr.join() // return '010,1234,5678'
arr.join('-') // return '010-1234-5678'
Array.prototype.pop()
배열의 마지막 값을 삭제한 후 삭제한 값을 반환한다.
let arr = ['A', 'B', 'C']
arr.pop() // return 'C'
console.log(arr) // ['A', 'B']
Array.prototype.shift()
배열의 첫 번째 값을 삭제한 후 삭제한 값을 반환한다.
let arr = ['A', 'B', 'C']
arr.shift() // return A
console.log(arr) // ['B', 'C']
Array.prototype.push()
배열 마지막에 값을 추가한 후 요소 갯수를 반환한다.
let arr = ['A', 'B', 'C']
arr.push('D') // return 4
console.lof(arr) // ['A', 'B', 'C', 'D']
Array.prototype.reduce()
이전 콜백 함수의 return값을 이용하여 각 요소에 콜백 함수를 적용시킨 값을 반환한다.
// reduce((previousValue, currentValue, currentIndex, array) => { /* … */ }, initialValue)
// previousValue 2회차부터 콜백함수의 결과값을 저장할 변수명
// currentValue 현재 요소의 값, currentIndex 현재 요소의 Index
// initialValue 1회차 콜백함수 호출 시 'previousValue'로 사용될 초기화값
let arr = [1, 2, 3];
let initialValue = 5;
array1.reduce((previousValue, currentValue) => previousValue - currentValue, initialValue)); // return -6 ▶ 1-2-3
array1.reduce((previousValue, currentValue) => previousValue - currentValue, 10)); // return 4 ▶ 10-1-2-3
Array.prototype.reduceRight()
Array.prototype.reduce() method를 오른쪽부터 진행한다.
⭐ Array.prototype.slice
매개변수로 주어진 Index의 값을 반환한다.
let arr = ['A', 'B', 'C']
arr.slice(1) // return ['B', 'C'] index 1 ~ 마지막까지 반환
arr.slice(1, 2) // return ['B'] index 1 ~ 2의 전까지 반환. 단, 2는 반환하지 않는다.
Array.prototype.reverse()
배열 순서를 반전한다.
Array(1, 2, 3).reverse() // return [3, 2, 1]
⭐ Array.prototype.sort()
배열을 UTF-16 코드 단위값으로 정렬한다.
Array(1, 2, 10).sort() // return [1, 10, 2]
Array('Z', 'a', 1).sort() // return [1, Z, a]
함수를 통해 정렬 방식을 지정할 수 있다.
// sort((a, b) => { /* … */ } ) ▶ 비교를 위한 배열 내 요소 a, b
※ 빈 slot이 있다면 가장 마지막으로 정렬된다.
참조
- https://developer.mozilla.org/ko/