[SEB FE] section 2 unit 1 (2) 고차 함수 풀이 15~24

동화·2022년 10월 6일
0

코드스테이츠

목록 보기
14/32
post-custom-banner

15.

수를 받아 각 요소를 두 배로 곱한 수를 배열로 리턴

function getDoubledElements(arr) {
  return arr.map(function(el){
    return el * 2
  })
}

.map 이용해서 함수를 돌면서 각 요소를 곱하기 2해준후 출력해준다



16.

문자열 -> 각 요소의 길이를 요소로 같은 배열 리턴

function getLengthOfElements(arr) {
  return arr.map(obj => obj.length)
}

페어분 께서 화살표 함수 사용하는 법을 알려주셨따..ㅠ_ㅠ

오늘도 안전벨트매고 버스 열심히 탄다



17.

요소가 짝수일 경우 ok, 홀수일 경우 no 출력

function checkEvenOrNot(arr) {
  return arr.map (function(el){
    if (el === 0) {
      return 'no'
    }
    if (el % 2 === 0) {
      return 'ok'
    } else {
      return 'no'
    }
  
  })
}

내가 쓴 코드.. 처음에 0 의 값일 때가 통과를 못해서 따로 요소가 0일 때는 no를 출력하라고 지정해주었다

레퍼런스 📌

function checkEvenOrNot(arr) {
  return arr.map(function (el) {
    if (el === 0 || el % 2) {
      return 'no';
    } else {
      return 'ok';
    }
  });
}

처음부터 요소가 0이고, 또 요소를 2로나눈 나머지의 값이 존재할 경우를 no로 출력하라고 먼저 주었음.

훨씬 코드가 간결해졌당

function checkEvenOrNot(arr) {
  return arr.map(el =>
    (el === 0 || el % 2) ? 'no' : 'ok')
}

코드를 더더 간단하게 적어보기



18.

객체를 입력받아 키가 name인 요소를 배열로 나열

function getOnlyNames(arr) {
  return arr.map(obj => obj.name)
}



19.

function getFullNames(arr) {
  return arr.map(obj => 	        
		`${obj.firstName} ${obj.lastName}`)
}



20.

  1. 키에 해당하는 값이 배열인 경우
  2. 배열의 각 요소를 제곱한 새로운 배열을 리턴
function square(number) {
  return number * number;
}
function getSquaredElementsAtProperty(obj, property) {
  let result = obj[property];

    if (Array.isArray(result)){
      return result.map(el => square(el))
  } else {
    return []
  }
}
function square(number) {
  return number * number;
}

function getSquaredElementsAtProperty(obj, property) {
  let result = obj[property];
    return Array.isArray(result) ? result.map(el => square(el)) : []
}



21.

객체에서 나이가 18세 이상인 사람의 이름을 배열로

const filtered18 = function (age){
  if (age >= 18) {
    return true
  }
  return false
}

function getOnlyAllowedToDrink(arr) {
  let result = arr.filter(function(obj){
    return filtered18(obj.age)
  }) // 소괄호 뒤에 return이나 . 등을 붙이면 연결해서  실행이 되기 때문에 엔터를 쳐주어야 함.
  return result.map(function(obj){
    return obj.name
  })
}

처음에 적었던 코드는 이거였다

function getOnlyAllowedToDrink(arr) {
  let filteredList = arr.filter (function(info){
    return info.age >= 18
  })

return filteredList.map(info => 			info.name)
}

두 번쨰로 적었던 코드. 처음에는 함수를 지정한 변수값에 일일이 true와 false를 달아주고 아예 밖으로 빼내었음.

근데 그냥 처음 함수 내에서 filter를 이용해서 18세 이상인 정보들만 빼낸 목록을 만들어주고,

그 다음으로 map 을 이용해 name 값을 출력했다.





22.

연도 등을 갖는 객체를 입력받아 해당 연도 보다 이전에 개봉한 영화를 배열로 나열 (영화 제목 by 영화 감독)

function classicMovies(arr, year) {
  let movies = arr.filter (function(movieYear){
    return movieYear.year < year
  })

  return movies.map(movieYear => `${movieYear.title} by ${movieYear.director}`)
}

이거 변수 만드는 과정에서 조금 헷갈렸는데.. 어찌저찌 했다. 변수명을 개떡같이 ㅠ 해가지고



23.

숫자인 배열의 모든 합

function computeSumOfAllElements(arr) {
  if (arr.length === 0) return 0
  return arr.reduce((num1, num2) => num1 + num2)
}

.reduce를 이용한다



24.

숫자인 배열을 모두 곱함

function computeProductOfAllElements(arr) {
  return arr.reduce((acc, cur) => acc * cur ,1)
}
post-custom-banner

0개의 댓글