문제 65 : 변형된 리스트

1 minute read

문제 65 : 변형된 리스트

// a = [1, 2, 3, 4]
// b = [a, b, c, d]
// 이런 리스트가 있을 때 [[1, a], [b, 2], [3, c], [d, 4]] 이런 식으로 a, b 리스트가 번갈아가면서 출력되게 해주세요.

풀이 1

const a = prompt("첫번째 배열").split(" ");
const b = prompt("두번째 배열").split(" ");

const mixArr = a.map((item, index) => [item, b[index]]);
console.log(mixArr);

자바스크립트의 map

map() 메서드는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다.

예시를 통해서 MDN의 설명을 이해해보자.

const arr = [1, 2, 3, 4];
const map1 = arr.map((x) => x * 2);

console.log(map1);
// [2, 4, 6, 8]

map에는 함수를 전달한다. 첫번째 매개변수(예시에서는 x)에는 배열의 값들이 들어온다.
즉 1, 2, 3, 4가 순서대로 전달된다는 뜻이다.

기존의 배열을 함수를 호출한 결과로 다시 배열을 만들어 반환한다는 것은 위의 예시처럼 된다는 뜻이다.

좀 더 활용 범위를 넓힌다면 index를 받아서 사용할수도 있다.

arr.map(callback(currentValue[, index[, array]])[, thisArg])

callback은 세가지 인수를 가질 수 있는데, currentValue는 처리할 현재 요소, index는 처리할 현재 요소의 인덱스, array는 map을 호출한 기존 배열을 나타낸다.
그리고 thisArg는 callback에서 사용될 this를 지정할 수 있다.

const arr = [1, 2, 3, 4];
const map1 = arr.map((x, i) => x * i);

console.log(map1);
// [0, 2, 6, 12]

인덱스를 받아와서 *2를 하는 대신에 *i를 했다.
인덱스를 곱했기 때문에 0, 2, 6, 12가 되었다.

Leave a comment