Array 배열객체
속성
속성 | 설명 | mdn |
length | 배열의 개수 | 바로가기 |
메서드
메소드 | 설명 | mdn |
push() | 배열의 마지막에 추가하고 배열의 총길이를 반환 | 바로가기 |
pop() | 배열의 가장 마지막 요소를 제거하고, 제거된 요소를 반환 | 바로가기 |
shift() | 배열의 가장 첫 요소를 제거하고, 그 제거된 요소를 반환 | 바로가기 |
unshift() | 배열의 가장 앞에 추가하고, 배열의 총 길이를 반환 | 바로가기 |
reverse() | 배열 요소의 순서를 전부 반대로 교체 | 바로가기 |
sort() | 배열 요소들을 알파벳 순서에 따라 정렬 | 바로가기 |
toString() | 배열의 모든 요소를 하나의 문자열로 반환 | 바로가기 |
slice() | 시작부터 종료 바로 앞까지의 모든 배열 요소를 추출하여 새로운 배열을 반환 | 바로가기 |
splice() | 배열 요소를 제거하거나 새로운 배열 요소를 추가하여 배열의 내용을 변경 | 바로가기 |
concat() | 배열의 뒤에 인수로 전달받은 배열을 합쳐서 만든 새로운 배열을 반환 | 바로가기 |
indexOf() | 배열 요소가 처음으로 등장하는 위치의 인덱스를 반환 | 바로가기 |
join() | 배열의 모든 요소를 하나의 문자열로 반환 | 바로가기 |
forEach() | 배열의 모든 요소에 반복적으로 명시된 콜백 함수를 실행 | 바로가기 |
map() | 배열의 모든 요소에 대하여 반복적으로 명시된 콜백 함수를 실행한 후, 결과를 새로운 배열로 반환 | 바로가기 |
filter() | 배열의 모든 요소에 대하여 반복적으로 명시된 콜백 함수를 실행한 후, 그 결과값이 true인 것들만 새로운 배열에 담아 반환 | 바로가기 |
every() | 배열을 반복적으로 명시된 콜백 함수를 실행한 후, 그 결값이 모두 true일 때에만 true를 반환 | 바로가기 |
some() | 배열을 반복적으로 명시된 콜백 함수를 실행한 후, 그 결값이 g하나라도 true일 때에만 true를 반환 | 바로가기 |
find() | 주어진 판별 함수를 만족하는 첫 번째 요소의 값을 반환합니다. 그런 요소가 없다면 undefined를 반환 | 바로가기 |
findIndex() | 주어진 판별 함수를 만족하는 배열의 첫 번째 요소에 대한 인덱스를 반환합니다. 만족하는 요소가 없으면 -1을 반환 | 바로가기 |
from() | 유사 배열 객체(array-like object)나 반복 가능한 객체(iterable object)를 얕게 복사해 새로운Array 객체 | 바로가기 |
isArray() | 인자가 Array인지 판별 | 바로가기 |
includes() | 배열이 특정 요소를 포함하고 있는지 판별 | 바로가기 |
reduce() | 배열의 각 요소에 대해 주어진 리듀서 (reducer) 함수를 실행하고, 하나의 결과값을 반환합니다. | 바로가기 |
at() | 정숫값을 받아 해당 인덱스에 있는 항목을 반환하며, 양수와 음수를 사용 | 바로가기 |
1) push()
배열의 끝에 하나 이상의 요소를 추가하고, 배열의 새로운 길이를 반환
push 메서드는 배열 끝에 여러 값을 추가합니다.
const animals = ['pigs', 'goats', 'sheep'];
const count = animals.push('cows');
console.log(count);
// output: 4
console.log(animals);
// output: Array ["pigs", "goats", "sheep", "cows"]
animals.push('chickens', 'cats', 'dogs');
console.log(animals);
// output: Array ["pigs", "goats", "sheep", "cows", "chickens", "cats", "dogs"]
2) pop()
배열에서 마지막 요소를 제거하고 그 요소를 반환합니다.
배열에서 제거한 요소. 빈 배열의 경우 undefined를 반환합니다.
const plants = ['broccoli', 'cauliflower', 'cabbage', 'kale', 'tomato'];
console.log(plants.pop());
// Expected output: "tomato"
console.log(plants);
// Expected output: Array ["broccoli", "cauliflower", "cabbage", "kale"]
plants.pop();
console.log(plants);
// Expected output: Array ["broccoli", "cauliflower", "cabbage"]
3) shift()
배열에서 첫 번째 요소를 제거하고, 제거된 요소를 반환
const array1 = [1, 2, 3];
const firstElement = array1.shift();
console.log(array1);
// Expected output: Array [2, 3]
console.log(firstElement);
// Expected output: 1
4) unshift()
새로운 요소를 배열의 맨 앞쪽에 추가
const array1 = [1, 2, 3];
console.log(array1.unshift(4, 5));
// Expected output: 5
console.log(array1);
// Expected output: Array [4, 5, 1, 2, 3]
5) indexOf()
배열에서 지정된 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고 존재하지 않으면 -1을 반환
const beasts = ['ant', 'bison', 'camel', 'duck', 'bison'];
console.log(beasts.indexOf('bison'));
// Expected output: 1
// Start from index 2
console.log(beasts.indexOf('bison', 2));
// Expected output: 4
console.log(beasts.indexOf('giraffe'));
// Expected output: -1
6) includes()
배열의 항목에 특정 값이 포함되어 있는지를 판단하여 적절히 true 또는 false를 반환합니다.
const result = array.includes(valueToFind[, fromIndex]);
- valueToFind: 배열에서 찾고자 하는 요소.
- fromIndex: 검색을 시작할 인덱스. 기본값은 0입니다. 음수 값은 배열의 끝에서부터의 오프셋을 나타냅니다.
const array = [1, 2, 3, 4, 5];
console.log(array.includes(3)); // true
console.log(array.includes(6)); // false
7) slice()
배열의 begin 부터 end 까지(end 미포함)에 대한 얕은 복사본을 새로운 배열 객체로 반환합니다. 원본 배열은 바뀌지 않습니다.
const newArray = array.slice(start, end);
- start: 배열에서 잘라낼 시작 인덱스입니다. 기본값은 0입니다.
- end: 배열에서 잘라낼 끝 인덱스(포함되지 않음)입니다. 기본값은 배열의 길이입니다.
const array = [1, 2, 3, 4, 5];
const slicedArray1 = array.slice(1, 3);
console.log(slicedArray1); // [2, 3]
const slicedArray2 = array.slice(2);
console.log(slicedArray2); // [3, 4, 5]
const slicedArray3 = array.slice();
console.log(slicedArray3); // [1, 2, 3, 4, 5]
8) splice()
배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경합니다.
array.splice(start, deleteCount[, item1[, item2[, ...]]])
- start: 배열의 변경을 시작할 인덱스입니다. 음수 값은 배열의 끝에서부터 요소를 세는 데 사용됩니다.
- deleteCount: 배열에서 제거할 요소의 수입니다. 0이면 요소를 제거하지 않습니다.
- item1, item2, ...: 배열에 추가할 요소들입니다. 생략하면 아무 요소도 추가되지 않습니다.
const array = [1, 2, 3, 4, 5];
// 인덱스 2부터 2개의 요소 삭제
const removed = array.splice(2, 2);
console.log(array); // [1, 2, 5]
console.log(removed); // [3, 4]
9) concat()
두 개 이상의 배열을 병합하는 데 사용됩니다. 이 메서드는 기존 배열을 변경하지 않고, 새 배열을 반환합니다.
const array1 = ['a', 'b', 'c'];
const array2 = ['d', 'e', 'f'];
const array3 = array1.concat(array2);
console.log(array3);
// Expected output: Array ["a", "b", "c", "d", "e", "f"]
10) sort()
배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다.
기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.
원본 배열이 정렬
const months = ['March', 'Jan', 'Feb', 'Dec'];
months.sort();
console.log(months);
// Expected output: Array ["Dec", "Feb", "Jan", "March"]
const array1 = [1, 30, 4, 21, 100000];
array1.sort();
console.log(array1);
// Expected output: Array [1, 100000, 21, 30, 4]
- 양수: 첫 번째 인수가 두 번째 인수보다 큰 경우
- 음수: 첫 번째 인수가 두 번째 인수보다 작은 경우
- 0: 두 인수가 같은 경우
* 오름차순정렬
function compare(a, b) {
if (a > b ) {
return 1;
}
if (a < b ) {
return -1;
}
// a must be equal to b
return 0;
}
* 내림차순 정렬
function compare(a, b) {
if (a > b ) {
return -1;
}
if (a < b ) {
return 1;
}
// a must be equal to b
return 0;
}
* 오름차순 유형
function compareNumbers(a, b) {
return a - b;
}
* 내림차순 유형
function compareNumbers(a, b) {
return b - a;
}
예) 날짜순으로 정렬하기
let datesArray = [new Date('2024-03-20'), new Date('2024-03-22'), new Date('2024-03-21')];
// 배열을 날짜순으로 정렬
datesArray.sort(function (a, b) {
return a - b; // a와 b를 비교하여 정렬
});
for (let item of datesArray) {
console.log(item.toDateString());
}
map을 이용한 새로운 배열
let dateStringArray = ['2024-03-20', '2024-03-22', '2024-03-21'];
let dateObjectsArray = dateStringArray.map(function (dateString) {
return new Date(dateString);
});
dateObjectsArray.sort(function (a, b) {
return a - b;
});
console.log(dateObjectsArray);
11) join()
배열의 모든 요소를 연결해 하나의 문자열로 만듭니다.
const elements = ['Fire', 'Air', 'Water'];
console.log(elements.join());
// Expected output: "Fire,Air,Water"
console.log(elements.join(''));
// Expected output: "FireAirWater"
console.log(elements.join('-'));
// Expected output: "Fire-Air-Water"
12) forEach()
각 배열 요소에 대해 제공된 함수를 한 번씩 실행합니다.
array.forEach(callback(currentValue[, index[, array]])[, thisArg])
- callback: 배열의 각 요소에 대해 실행할 함수. 세 개의 인수를 가집니다:
- currentValue: 처리할 현재 요소.
- index: 처리할 현재 요소의 인덱스. (Optional)
- array: forEach를 호출한 배열. (Optional)
- thisArg: callback을 실행할 때 this로 사용할 값. (Optional)
const numbers = [1, 2, 3, 4, 5];
numbers.forEach(function(number) {
console.log(number);
});
// 출력: 1, 2, 3, 4, 5
const array1 = ['a', 'b', 'c'];
array1.forEach((element) => console.log(element));
// Expected output: "a"
// Expected output: "b"
// Expected output: "c"
13) map()
배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다.
const newArray = array.map(callback(element[, index[, array]])[, thisArg])
- callback: 배열의 각 요소에 대해 실행할 함수. 세 개의 인수를 가집니다:
- element: 처리할 현재 요소.
- index: 처리할 현재 요소의 인덱스. (Optional)
- array: map을 호출한 배열. (Optional)
- thisArg: callback을 실행할 때 this로 사용할 값. (Optional)
const numbers = [1, 2, 3, 4, 5];
const doubled = numbers.map(function(number) {
return number * 2;
});
console.log(doubled); // [2, 4, 6, 8, 10]
const array1 = [1, 4, 9, 16];
// Pass a function to map
const map1 = array1.map((x) => x * 2);
console.log(map1);
// Expected output: Array [2, 8, 18, 32]
14) filter()
주어진 배열의 일부에 대한 얕은 복사본을 생성하고, 주어진 배열에서 제공된 함수에 의해 구현된 테스트를 통과한 요소로만 필터링합니다.
const newArray = array.filter(callback(element[, index[, array]])[, thisArg])
- callback: 배열의 각 요소에 대해 실행할 함수. 세 개의 인수를 가집니다:
- element: 처리할 현재 요소.
- index: 처리할 현재 요소의 인덱스. (Optional)
- array: filter를 호출한 배열. (Optional)
- thisArg: callback을 실행할 때 this로 사용할 값. (Optional)
const numbers = [1, 2, 3, 4, 5, 6];
const evenNumbers = numbers.filter(function(number) {
return number % 2 === 0;
});
console.log(evenNumbers); // [2, 4, 6]
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter((word) => word.length > 6);
console.log(result);
// Expected output: Array ["exuberant", "destruction", "present"]
15) find()
주어진 판별 함수를 만족하는 첫 번째 요소의 값을 반환합니다. 그런 요소가 없다면 undefined를 반환합니다.
const foundElement = array.find(callback(element[, index[, array]])[, thisArg])
- callback: 배열의 각 요소에 대해 실행할 함수. 세 개의 인수를 가집니다:
- element: 처리할 현재 요소.
- index: 처리할 현재 요소의 인덱스. (Optional)
- array: find를 호출한 배열. (Optional)
- thisArg: callback을 실행할 때 this로 사용할 값. (Optional)
const numbers = [1, 2, 3, 4, 5, 6];
const firstEvenNumber = numbers.find(function(number) {
return number % 2 === 0;
});
console.log(firstEvenNumber); // 2
const array1 = [5, 12, 8, 130, 44];
const found = array1.find((element) => element > 10);
console.log(found);
// Expected output: 12
16) findIndex()
주어진 판별 함수를 만족하는 배열의 첫 번째 요소에 대한 인덱스를 반환합니다. 만족하는 요소가 없으면 -1을 반환합니다.
const array1 = [5, 12, 8, 130, 44];
const isLargeNumber = (element) => element > 13;
console.log(array1.findIndex(isLargeNumber));
// Expected output: 3
17) reduce()
array.reduce(callback[, initialValue])
- callback: 각 요소에 대해 실행할 함수. 네 개의 인수를 가집니다:
- accumulator: 누산기. 콜백의 반환값을 누적합니다.
- currentValue: 처리할 현재 요소.
- currentIndex: 처리할 현재 요소의 인덱스. (Optional)
- array: reduce()를 호출한 배열. (Optional)
- initialValue: 초기값. (Optional)
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce(function(accumulator, currentValue) {
return accumulator + currentValue;
}, 0);
console.log(sum); // 15
19) at()
정숫값을 받아 해당 인덱스에 있는 항목을 반환하며, 양수와 음수를 사용할 수 있습니다. 음의 정수는 배열의 마지막 항목부터 거슬러 셉니다.
const array = [10, 20, 30, 40, 50];
// 양수 인덱스
console.log(array.at(0)); // 10
console.log(array.at(2)); // 30
// 음수 인덱스
console.log(array.at(-1)); // 50 (마지막 요소)
console.log(array.at(-3)); // 30
20) some()
배열 안의 어떤 요소라도 주어진 판별 함수를 적어도 하나라도 통과하는지 테스트합니다. 만약 배열에서 주어진 함수가 true을 반환하면 true를 반환합니다. 그렇지 않으면 false를 반환합니다. 이 메서드는 배열을 변경하지 않습니다.
const result = array.some(callback(element[, index[, array]])[, thisArg])
- callback: 배열의 각 요소에 대해 실행할 함수. 세 개의 인수를 가집니다:
- element: 처리할 현재 요소.
- index: 처리할 현재 요소의 인덱스. (Optional)
- array: some을 호출한 배열. (Optional)
- thisArg: callback을 실행할 때 this로 사용할 값. (Optional)
const numbers = [1, 2, 3, 4, 5];
const hasEvenNumber = numbers.some(function(number) {
return number % 2 === 0;
});
console.log(hasEvenNumber); // true
21) every()
배열의 모든 요소가 제공된 함수로 구현된 테스트를 통과하는지 테스트합니다. 이 메서드는 불리언 값을 반환합니다.
const result = array.every(callback(element[, index[, array]])[, thisArg])
- callback: 배열의 각 요소에 대해 실행할 함수. 세 개의 인수를 가집니다:
- element: 처리할 현재 요소.
- index: 처리할 현재 요소의 인덱스. (Optional)
- array: every를 호출한 배열. (Optional)
- thisArg: callback을 실행할 때 this로 사용할 값. (Optional)
const numbers = [2, 4, 6, 8, 10];
const allEven = numbers.every(function(number) {
return number % 2 === 0;
});
console.log(allEven); // true
22) flat()
모든 하위 배열 요소가 지정된 깊이까지 재귀적으로 연결된 새 배열을 생성합니다.
const newArray = array.flat([depth]);
const arr1 = [1, 2, [3, 4]];
const flatArr1 = arr1.flat();
console.log(flatArr1); // [1, 2, 3, 4]
23) Array.from()
유사 배열 객체(array-like object) 또는 반복 가능한 객체(iterable object)를 얕게 복사하여 새로운 배열을 만듭니다. 이 메서드는 다양한 자료 구조를 배열로 변환할 때 유용합니다.
Array.from(arrayLike[, mapFn[, thisArg]])
- arrayLike: 배열로 변환할 유사 배열 객체 또는 반복 가능한 객체.
- mapFn: 배열의 모든 요소에 대해 호출할 맵핑 함수. (Optional)
- thisArg: mapFn을 실행할 때 this로 사용할 값. (Optional)
const str = "Hello";
const arr = Array.from(str);
console.log(arr); // ['H', 'e', 'l', 'l', 'o']
24) fill()
배열의 모든 요소를 지정된 값으로 채웁니다. 이 메서드는 기존 배열을 변경하며, 새로운 배열을 생성하지 않습니다.
arr.fill(value[, start[, end]])
- value: 배열을 채울 값.
- start (선택): 시작 인덱스. 기본값은 0입니다.
- end (선택): 끝 인덱스 (이 인덱스는 제외됨). 기본값은 배열의 길이입니다.
let arr = [1, 2, 3, 4, 5];
arr.fill(0);
console.log(arr); // [0, 0, 0, 0, 0]
유사 배열 객체
유사 배열 객체(array-like object)는 배열처럼 인덱스와 length 속성을 가지지만, 실제 배열은 아닌 객체를 의미합니다.
이러한 객체는 배열 메서드를 직접 사용할 수 없지만, 배열로 변환하면 배열 메서드를 사용할 수 있습니다.
유사 배열 객체의 특징
- 인덱스 프로퍼티: 배열과 마찬가지로 인덱스를 통해 요소에 접근할 수 있습니다.
- length 속성: 배열의 길이를 나타내는 length 속성을 가지고 있습니다.
- Array.prototype 메서드 없음: 배열이 아니기 때문에 배열 메서드를 직접 사용할 수 없습니다.
'javascript+es6' 카테고리의 다른 글
[ javascript ] 10. DOM , BOM (0) | 2023.09.20 |
---|---|
[ javascript ] 09. Date객체, Math객체 (0) | 2023.09.19 |
[ javascript ] 07. String 객체 (1) | 2023.09.17 |
[ javascript ] 06. 원시타입, 참조타입, 객체 (0) | 2023.09.16 |
[ javascript ] 05. 템플릿 리터널 , 함수, 내장함수 (0) | 2023.09.14 |