문제
세 개의 프로퍼티 name과 surname, id를 가진 객체 user가 담긴 배열이 있습니다.
name과 surname을 조합해 fullName을 만들고, 이를 이용해 두 개의 프로퍼티 id와 fullName을 가진 객체를 담은 새로운 배열을 반환해주는 코드를 작성해보세요.
- 예시
let john = { name: "John", surname: "Smith", id: 1 };
let pete = { name: "Pete", surname: "Hunt", id: 2 };
let mary = { name: "Mary", surname: "Key", id: 3 };
let users = [ john, pete, mary ];
let usersMapped = /* 여기에 코드를 작성하세요. */
/*
usersMapped = [
{ fullName: "John Smith", id: 1 },
{ fullName: "Pete Hunt", id: 2 },
{ fullName: "Mary Key", id: 3 }
]
*/
alert( usersMapped[0].id ) // 1
alert( usersMapped[0].fullName ) // John Smith
나의 풀이
let john = { name: "John", surname: "Smith", id: 1 };
let pete = { name: "Pete", surname: "Hunt", id: 2 };
let mary = { name: "Mary", surname: "Key", id: 3 };
let users = [john, pete, mary];
let usersMapped = users.map(function (item) {
let obj = {};
obj.fullName = `${item.name} ${item.surname}`;
obj.id = item.id;
return obj;
});
해답
let john = { name: "John", surname: "Smith", id: 1 };
let pete = { name: "Pete", surname: "Hunt", id: 2 };
let mary = { name: "Mary", surname: "Key", id: 3 };
let users = [ john, pete, mary ];
let usersMapped = users.map(user => ({
fullName: `${user.name} ${user.surname}`, // 이런 식으로 입력해도 된다!
id: user.id
}));
/*
usersMapped = [
{ fullName: "John Smith", id: 1 },
{ fullName: "Pete Hunt", id: 2 },
{ fullName: "Mary Key", id: 3 }
]
map
메소드를 이용해서 새로운 배열을 만들어줄 때, 요소를 객체로 설정하고 싶다면
함수에 객체를 선언하고 채워준 후, 반환하지 않고 바로 객체 그 자체를 적어줘도 된다.
- map 메소드 이용해서 요소가 객체인 배열 만들기
arr.map(item ⇒ ({key: value, key: value}))
// 아래와 같음
arr.map(function(item) {
let obj = {};
obj.key = value;
obj.key = value;
return obj;
}
참고
https://ko.javascript.info/array-methods
'Programming > Client' 카테고리의 다른 글
[Javascript] array.reduce() 콜백함수 속 증감연산자 (0) | 2022.05.03 |
---|---|
[Javascript] Array.fill()로 2차원 배열을 만들면 안되는 이유 (0) | 2022.05.02 |
[Javascript] 확장 가능한 계산기 만들기 (생성자 함수) (0) | 2022.03.23 |
[Javascript] 배열 메소드를 이용한 함수 만들기 (0) | 2022.03.21 |
[Javascript] 입력한 숫자의 합 구하는 함수 (0) | 2022.03.17 |