개인 정보를 담은 배열을 입력받습니다.
조건에 맞게 각 개인의 전체 이름을 요소로 갖는 배열을 리턴해야 합니다.
조건1) firstName 과 lastName 이 모두 있으면 나타내고 하나만 있을때는 하나만 나타내줍니다.
조건2)사람들의 나이는 모두 다르고, 오름차순으로 정렬해야합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
let peoplelist = [
[
['firstName', 'goo'],
['age', 42],
['gender', 'male'],
],
[
['firstName', 'kim'],
['lastName', 'gangjun'],
['age', 30],
['gender', 'female'],
],
[
['lastName', 'lee'],
['age', 32],
['gender', 'male'],
],
];
|
cs |
이처럼 나와야한다.
1
2
|
let output = outputName(peoplelist);
console.log(output); // --> ['kim gangjun', 'goo', 'lee'];
|
cs |
약간의 노가다가 들어가지만 문제를 읽고 하나씩 해결해 가는 전략을 가졌습니다.
1)먼저 배열안에 있는 배열들을 객체로 만듭니다.
2)그 객체 안의 나이를 비교하여 합니다. (오름차순 공식입니다. 외우기)
3)map을 사용하여 이름이 있는지 여부에 따라 각각의 다른 리턴값을 가집니다.
4)result를 리턴합니다.
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
|
function outputName(arr) {
//먼저 안에 있는 배열을 객체로 만들어준다.
let newArr = []
for(let i =0; i< arr.length; i++){
newArr.push(Object.fromEntries(arr[i]))
}
//객체에 있는 나이 비교+오름차순 만들기 공식
newArr.sort(function (acc, cur) {
if(acc.age < cur.age ){
return -1
} else if( acc.age > cur.age) {
return 1
} else {
return 0
}
});
//이름과 성에 존재에 따라 나타내주기
let result = newArr.map((key)=>{
if(key.firstName !== undefined && key.lastName !==undefined){
return `${key.firstName} ${key.lastName}`
} else if (key.firstName !== undefined && key.lastName ===undefined ){
return `${key.firstName}`
} else if (key.firstName === undefined && key.lastName !==undefined){
return `${key.lastName}`
} else {
}
})
return result;
}
|
cs |
반응형
'개발 공부 > 웹개발' 카테고리의 다른 글
Dom 기본개념 정리(2)_알아두면 좋은 이벤트와 이벤트의 기본 문법, value와 textContent의 차이 (0) | 2021.05.10 |
---|---|
react 리액트 반복문 만들기 map (0) | 2021.05.10 |
알고리즘_아이소그램 문제풀이 (0) | 2021.05.09 |
문자열을 정수로 바꾸는 함수 parseInt() 와 parseFloat() 정리/Java script (0) | 2021.05.09 |
유효성 검사 하기_code states 과제 (0) | 2021.05.08 |
댓글