1. 배열이란
여러 개의 값을 순차적으로 나열한 자료 구조
인덱스 : 배열에서 위치를 나타냄
요소 : 배열의 값
2. 자바스크립트의 배열은 객체이다 자바스크립트에서 배열은 배열이 아니라 객체이다.
구분
일반적인 배열
자바스크립트 배열
동일 크기 메모리 공간
O
X
연속 나열
O
X
3. 희소배열과 length
arrayLength.js 1 2 3 4 5 6 7 8 const arr = [1 ];arr.length = 3 ; console .log(arr.length); console .log(arr);
4. 배열 생성자 함수 4.1. 배열 리터럴 arrayLiteral.js
4.2. Array 생성자 함수 Array 생성자 함수 1 2 3 4 5 6 7 8 const arr1 = new Array (10 );console .log(arr1); const arr2 = new Array (10 , 11 ); console .log(arr2); const arr3 = new Array ({}); console .log(arr3);
4.3 Array.of 인수가 숫자 하나여도 인수를 요소로 갖는 배열을 생성
arrayOf.js 1 2 const arr = Array .of(1 ); console .log(arr);
4.4 Array.from 유사 배열 객체 or 이터러블 객체를 변환하여 새로운 배열을 생성, 두 번째 인수로 함수를 받아 배열을 채워 넣을 수 있다.
arrayFrom.js 1 2 3 4 5 6 7 8 9 10 const arr1 = Array .from("Hello" );console .log(arr1); const arr2 = Array .from({ 0 : 0 , 1 : 1 , 2 : 2 , length : 3 }, function (v, i ) { console .log(v); return i; }); console .log(arr2);
5. 배열 요소의 참조 배열을 조회할 때는 대괄호와 인덱스를 사용한다.
lookUpArray.js 1 2 3 4 5 const arr = [1 , 2 ];console .log(arr[0 ]); console .log(arr[100 ]);
6. 배열 요소의 추가와 갱신 AddArray.js 1 2 3 4 5 6 7 8 9 10 const arr = [];arr[0 ] = 1 ; arr["1" ] = 2 ; arr["hahaha" ] = 3 ; arr[1.129 ] = 4 ; arr[-1 ] = 5 ;
7. 배열 요소의 삭제
deleteArray.js 1 2 3 4 5 6 7 8 9 10 11 12 const arr = [1 , 2 , 3 ];delete arr[1 ];console .log(arr); const arr2 = [1 , 2 , 3 ];arr2.splice(1 , 1 ); console .log(arr2);
8. 배열 메소드 8.1 원본 미수정 메소드 탐색: indexOf, isArray
추가, 제거: slice, join
변환: reverse
8.2 원본 미수정 메소드 추가, 제거: push, pop, unshift, shift, splice
연결: concat
변환: join
8.3 메소드 사용법 ArrayMethod.js 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 const array = [ 1 , 2 , 3 , 4 , 5 , 6 ];const array2 = [ 7 , 8 , 9 , 10 ];const length = array.push(1 );길이 = array.push(넣을요소); const lastElement = array.pop();제거된요소 = array.pop(); const length2 = array.unshift(0 );길이 = array.unshift(넣을요소); const firstElement = array.shift();제거된요소 = array.shift(); const reversedArray = array.reverse();거꾸로된배열 = 배열.reverse(); array.fill(0 ); 배열.fill(채울요소, (시작할인덱스), (끝낼인덱스)); const deletedElement = array.splice(3 );제거된요소 = array.splice(제거시작할인덱스, (제거개수), (제거후대신넣을요소)); const copyElement = array.slice(0 ,3 );복사된요소 = array.slice(시작인덱스, 끝(복사미포함)); const connectedArray = array.concat(array2);연결된배열 = 배열1. concat(배열2 ); const newString = array.join(':' );구분자로구분한문자열 = 배열.join('구분자' ) const bool = array.includes(1 , 1 ); const bool2 = array.includes(3 , -1 ); 참거짓 = 배열.includes(찾을요소, (시작인덱스)) [1 , [2 , [3 , [4 ]]]].flat()); [1 , [2 , [3 , [4 ]]]].flat(2 ); 배열.flat(평탄화 단계);
배열 메소드 중 push와 pop을 이용하여 스택을 만들 수 있다.
stack.js 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 const Stack = (function ( ) { const Stack = function (array ) { if (!Array .isArray(array)) throw new Error (`${array} is not Array` ); this .array = array; }; Stack.prototype.push = function (n ) { const len = this .array.push(n); console .log( `${n} 을/를 배열에 넣었습니다. 현재 배열: ${this .array} 배열의 길이: ${len} ` ); return len; }; Stack.prototype.pop = function ( ) { const lastElement = this .array.pop(); console .log( `마지막 배열 요소(${lastElement} )을/를 제거했습니다. 현재 배열: ${this .array} ` ); return lastElement; }; return Stack; })(); const stack = new Stack([1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ]);console .log(stack); stack.push(9 ); stack.pop(); class ClassStack { constructor (array) { if (!Array .isArray(array)) throw new Error (`${this .array} is not Array` ); this .array = array; } push(n) { const len = this .array.push(n); console .log( `${n} 을/를 배열에 넣었습니다. 현재 배열: ${this .array} 배열의 길이: ${len} ` ); return len; } pop(n) { const lastElement = this .array.pop(n); console .log( `마지막 배열 요소(${lastElement} )을/를 제거했습니다. 현재 배열: ${this .array} ` ); return lastElement; } } const classStack = new ClassStack([1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ]);console .log(classStack); classStack.push(9 ); classStack.pop();
9. 고차함수 고차함수는 함수를 전달 받거나 함수를 반환하는 함수이다.
9.1 Array#sort 배열의 요소를 문자열로 변경 후 정렬한다. 원본 배열을 수정한다.
Array-sort.js 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 const company = ["google" , "apple" , "microsoft" , "삼성" , "엘지" ];company.sort(); console .log(company); const points = [40 , 100 , 1 , 5 , 2 , 25 , 10 ];points.sort(function (a, b ) { return a - b; }); points.sort(function (a, b ) { return b - a; }); const member = [ { name: "Yu" , age: 32 , address: "incheon" , sign: 2008 , content: "JavaScript" , }, { name : "Jeon" , age : 30 , address : "incheon" , sign : 2009 , content : "HTML" }, { name : "Park" , age : 20 , address : "seoul" , sign : 2015 , content : "CSS" }, ]; function compare (key ) { return function (a, b ) { return a[key] > b[key] ? 1 : -1 ; }; } member.sort(compare("content" )); console .log(member);
9.2 Array#forEach 배열의 요소를 콜백함수의 인수로 하나하나씩 전달하고 실행한다.
원본 배열을 수정하지 않고 반환값이 항상 undefined이다.
원본 배열을 수정하려면 콜백 함수가 직접 변경해야 한다.
첫번째 인수로 함수, 두번째 인수로 this로 사용할 객체를 전달한다. (두번째 생략 가능)
for문과 달리 break
과 continue
를 사용할 수 없다.
Array-forEach.js 1 2 3 [1 , 2 , 3 ].forEach((item, index, arr ) => { console .log(`요소값: ${item} , 인덱스: ${index} , this: ${arr} ` ); });
9.3 Array#map forEach와 같으나 콜백함수의 반환 값들로 이루어진 새로운 배열을 반환 한다.
원본 배열은 변경되지 않는다.
첫번째 인수로 함수, 두번째 인수로 this로 사용할 객체를 전달한다. (두번째 생략 가능)
Array-map.js 1 2 3 4 5 const numbers = [1 , 4 , 9 ];const roots = numbers.map((item ) => Math .sqrt(item), this 로사용할객체);console .log(roots);
9.4 Array#filter map과 같으나 콜백함수의 실행 결과가 true인 요소들로 이루어진 새로운 배열을 반환 한다.
원본 배열은 변경되지 않는다.
첫번째 인수로 함수, 두번째 인수로 this로 사용할 객체를 전달한다. (두번째 생략 가능)
Array-filter 1 2 3 4 5 6 const numbers = [1 , 2 , 3 , 4 , 5 ];const evens = numbers.filter((item ) => !(item % 2 ));console .log(evens);
9.5 Array#reduce 배열을 순회하면서 이전 콜백함수의 반환값과 배열의 요소에 대해 인수로 전달된 콜백 함수를 실행하여 결과를 만들고 반환한다.
원본 배열은 변경되지 않는다.
하나의 결과값을 반환한다.
첫번째 인수로 함수, 두번째 인수로 초기값을 적는다.
Array-reduce.js 1 2 3 4 5 6 7 const multi = [1 , 2 , 3 , 4 ].reduce( (accumulator, currentValue, index, array) => accumulator * currentValue, 0 ); console .log(multi);
9.6 Array#some 콜백함수로 전달된 인수 중 하나라도 참이 있다면 true, 아니면 false를 반환한다.
첫번째 인수로 함수, 두번째 인수로 this로 사용할 객체를 전달한다. (두번째 생략 가능)
Array-some.js 1 2 const result = [5 , 10 , 15 ].some((item ) => item > 10 );console .log(result);
9.7 Array#every 콜백함수로 전달된 인수가 모두 참일 경우 true, 아니면 false를 반환한다.
첫번째 인수로 함수, 두번째 인수로 this로 사용할 객체를 전달한다. (두번째 생략 가능)
Array-every.js 1 2 3 let result = [5 , 10 , 15 ].every((item ) => item > 3 );console .log(result);
9.8 Array#find 콜백 함수로 전달된 인수의 참거짓을 가려 그 결과가 참인 첫번째 요소를 반환 한다.
참인 요소를 찾고 종료되므로 제일 처음 참 조건을 만족한 단 하나의 결과만을 리턴한다.
찾는 값이 없을 경우 undefined
를 반환한다.
Array-find.js 1 2 3 4 5 6 7 8 9 10 11 12 const member = [ { name : "Lee" , address : "Seoul" }, { name : "Kim" , address : "Incheon" }, { name : "Choi" , address : "Incheon" }, { name : "Park" , address : "Seoul" }, ]; const result = member.find((item ) => item.address === "Seoul" );console .log(result);
9.9 Array#findIndex 콜백 함수로 전달된 인수의 참거짓을 가려 그 결과가 참인 첫번째 요소의 인덱스를 반환 한다.
찾는 값이 없을 경우 -1을 반환한다
Array-findIndex.js 1 2 3 4 5 6 7 8 9 10 11 12 const member = [ { name : "Lee" , address : "Seoul" }, { name : "Kim" , address : "Incheon" }, { name : "Choi" , address : "Incheon" }, { name : "Park" , address : "Seoul" }, ]; const result = member.findIndex((item ) => item.address === "Seoul" );console .log(result);
9.10 Array#flatMap map을 통해 생성된 새로운 배열을 평탄화한다.
Array-flatMap.js 1 2 3 4 5 const arr = ["hello" , "world" ];console .log(arr.flatMap((str, index ) => [index, [str, str.length]]));
참고자료: poiemaweb.com
If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !