1. map 메서드
: 배열의 각 요소에 대해 주어진 함수를 호출하여 그 결과로 새로운 배열을 생성합니다. 이차원 배열에서 `map`을 사용하면 각 내부 배열에 대해 특정 변형을 적용할 수 있다.
#사용 예시
이차원 배열에서 각 내부 배열의 모든 값을 2배로 만드는 예시
( 첫 번째 `map`은 외부 배열의 각 요소(내부 배열)에 대해 호출되며, 두 번째 `map`은 각 내부 배열의 요소를 변형)
const array2D = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
const doubledArray = array2D.map(innerArray =>
innerArray.map(value => value * 2)
);
console.log(doubledArray);
// 출력: [ [2, 4, 6], [8, 10, 12], [14, 16, 18] ]
문제. 10개의 열을 가진 2차원 배열에서 2번째 열(인덱스 1)과 7번째 열(인덱스 6)의 값만 남겨 새로운 2차원 배열을 만들어라.
1. `map` 메서드로 배열의 각 요소에 대해 주어진 함수를 호출하여 새로운 배열을 생성
여기서는 각 행(row)을 가져와서 원하는 열만 포함된 새 배열을 만든다.
2. 열 인덱스: 자바스크립트 배열의 인덱스는 0부터 시작하므로, 2번째 열은 인덱스 1, 7번째 열은 인덱스 6.
3. 새 배열 생성: `[row[1], row[6]]`는 각 행에서 2번째와 7번째 열의 값만 포함된 새로운 배열을 생성한다.
// 원본 2차원 배열 (각 행에 10개의 열이 있는 배열)
let originalArray = [
[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],
// ... 더 많은 행이 있을 수 있습니다
];
// 특정 열만 남기기: 2번째 열(인덱스 1)과 7번째 열(인덱스 6)
let filteredArray = originalArray.map(row => [row[1], row[6]]);
// 결과 확인
console.log(filteredArray);
/*
[
[2, 7],
[12, 17],
[22, 27],
// ... 더 많은 행이 있을 수 있습니다
]
*/
2. filter 메서드
배열의 각 요소에 대해 주어진 조건을 테스트하고, 그 조건을 만족하는 요소들로 구성된 새로운 배열을 반환한다.
이차원 배열에서 `filter`를 사용하면 특정 조건을 만족하는 내부 배열을 필터링할 수 있다.
# 사용 예시
이차원 배열에서 각 내부 배열의 합이 10보다 큰 내부 배열만 추출하는 예시
(각 내부 배열의 합을 계산한 후, 그 합이 10보다 큰 내부 배열만 선택)
const array2D = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
const filteredArray = array2D.filter(innerArray =>
innerArray.reduce((sum, value) => sum + value, 0) > 10
);
console.log(filteredArray);
// 출력: [ [4, 5, 6], [7, 8, 9] ]
3. set
배열의 요소를 중복 없이 저장하는 데이터 구조
이차원 배열과 직접적인 관련은 없지만, 이차원 배열의 요소들에서 중복을 제거하거나 고유한 값만을 추출할 때 유용하다.
# 사용 예시
이차원 배열의 모든 값에서 중복을 제거하여 유일한 값만 추출.
`flat()` 메서드를 사용하여 이차원 배열을 일차원 배열로 평평하게 만든 후, `Set`을 사용하여 중복된 값을 제거한다.
마지막으로 `Array.from`을 사용하여 `Set`을 다시 배열로 변환한다.
const array2D = [
[1, 2, 3],
[4, 2, 6],
[7, 8, 9],
[1, 2, 3]
];
const uniqueValues = new Set(array2D.flat());
const uniqueArray = Array.from(uniqueValues);
console.log(uniqueArray);
// 출력: [1, 2, 3, 4, 6, 7, 8, 9]
'🚀 Programming > RPA_JavaScript+C#' 카테고리의 다른 글
[JavaScript] 스프레드 연산자 "..." (0) | 2024.11.03 |
---|---|
[JavaScript] 필드가 다른 두 자료의 대칭차집합 구하기 (0) | 2024.10.22 |