배열(Arrays)이란?
-Ordered collections of values
-for문과 인덱스를 사용하여 배열의 모든 요소를 순회할 수 있다
*ES6 : 인덱스를 사용하지 않고 배열의 모든 요소를 순회하는 방법 -> for(const item of arr) {...}
-[ ] 안에는 다양한 data type이 함께 담길 수 있다. ['string', number, variables, expression, function calls, [other arrays...]];
*유사배열객체(Array-like object) : 생김새는 index를 갖는 요소의 나열(순서 있는 목록), 즉 배열과 같아 위치 기반으로 접근이 가능하다. length 프로퍼티 값을 가지지만 forEach()나 map() 등 배열의 built-in 메소드는 이용 불가능하다. Array.from()나 나머지 패턴을 이용하면 배열로 변환 가능(얕은 복사)하다.
->배열처럼 동작하지만 Array의 인스턴스가 아니다!
예) String, Maps, Sets, arguments, HTMLCollection, NodeList(얘는 forEach 가능) 등
-Create :
1) "Array literal" syntax : const arr = [...];
2) "Array constructor function" syntax : const arr= new Array(...);
const fruits = [
"apple",
"orange",
"plum",
];
-Read & Update :
fruits[0]; // apple
fruits[1] = "pear"; // orange -> pear
fruits[3] = "lemon"; // lemon
-Delete
delete fruits[2]; // true (plum -> undefined)
-Methods :
.length; : 배열의 크기 (마지막 인덱스값에 1을 더한 값)
*arr.length = 0; 을 통해 배열을 비울 수 있다
.toString(); : 요소들을 쉼표로 구분한 문자열을 반환함
*문자열 형 변환이 일어난다. [1,2] + "1"; // "1,21"
.push('...'); : 배열 끝에 새로운 요소를 추가하고, 변경된 배열의 크기를 반환함 (*여러 개 요소를 한 번에 추가할 수 있다)
.pop(); : 배열 끝 요소를 제거하고, 제거한 요소를 반환함
.unshift('...'); : 배열 앞에 요소를 추가하고, 변경된 배열 크기를 반환함 (*여러 개 요소를 한 번에 추가할 수 있다)
.shift(); : 배열 앞 요소를 제거하고, 제거한 요소를 반환함
Array.isArray([...]); // true or false
.indexOf('...'); // index or -1
.includes('...'); // true or false
.slice(start, end); // 요소를 복사하여 새로운 배열을 반환 (*음수 -> 배열 끝에서부터 셈)
.splice(index, count, subs); // 삭제된 요소로 구성된 새로운 배열을 반환. 추가,삭제,교체가 모두 가능한 만등 메소드임. *원본변형
*교체 예시) ['a', 'b', 'c'].splice(1,0,'e') // ['a', 'e', 'b', 'c']
.concat(...); // 기존 배열에 다른 배열을 추가하여 새로운 배열을 반환함
.reverse(); // 요소를 역순으로 정렬. *원본변형
.join(...);
.at(...);
.forEach(fn); // 콜백함수를 인자로 받는다. 배열의 각 순회마다 함수가 호출된다
.find(fn);
.filter(fn);
.map(fn);
.sort(fn); // fn이 없으면 각 요소의 유니코드 값 순서에 따라 정렬한다. *원본변형(mutable)
.reduce(fn, init);
(https://sanxang.tistory.com/39)
*console.table([1, 2]); // 각 index와 value가 표로 나타남
*Creating Array dynamically
1. new Array(1,2,3,4,5); // [1,2,3,4,5]
*new Array(5); // [empty * 5];
-인자가 1개이면 인자 값은 배열의 길이를 나타내고, 아무 요소가 없는 배열을 반환함.
2. new Array(5).fill(1); // [1,1,1,1,1]
*[1,1,1,1,1].fill(2,1,3); // [1,2,2,2,1]
-fill()의 첫번째 인자는 채울 값, 두번째는 시작 인덱스, 마지막은 끝 인덱스임.
-fill()은 mutable 메소드이다.
3. Array.from({ length:5 }, ()=>1); // [1,1,1,1,1]
*Array.from({ length:5 }, ( _ , i ) => i+1)); // [1,2,3,4,5]
-underscore는 일반적으로 사용하지 않는 변수를 지칭한다. 위 식의 콜백함수에서 첫번째 인자인 '현재 순회하는 요소'는 함수 내에서 사용되지 않으므로 _로 나타낼 수 있다. 만약 인덱스가 필요 없었다면 콜백함수에 아무 매개변수도 지정하지 않아도 된다.
-Array.from()는 초기에 Array-likes-structure와 같은, 소위 [Iterable]를 만들기 위해 고안된 배열 메소드이다. 메소드 이름에서부터 알 수 있듯이 다른 것들'로 부터' 배열을 만드는 메소드이다.
'JavaScript > Syntax' 카테고리의 다른 글
[JavaScript] Data type2 (0) | 2022.07.11 |
---|---|
정규표현식 (0) | 2022.07.08 |
[JavaScript] 객체 (0) | 2022.07.08 |
[JavaScript] Syntax Basics (0) | 2022.07.08 |
[JavaScript] 반복문 (0) | 2022.06.28 |