고차함수 문제 만들어서 풀어보기

프최's log·2020년 8월 23일
0

Javascript

목록 보기
14/26

1. 문자열

① 문자열을 입력받아 중복되는 문자(letter)의 개수를 객체로 담아 출력하기

// 공백문자열이 없다는 조건
function getCount(arr){

  let countedNames = arr.split('').reduce(function (allElements, prop) { 
      if ( prop in allElements ) {
         allElements[prop]++;
      } 
      else { 
         allElements[prop] = 1;
      } return allElements;
    },{});
  return countedNames;
}

■ 하단 예제는 공백문자열이 있을 경우, 제외하는 조건을 추가

② 가장 많이 중복된 문자가 무엇이고, 몇 회인지 출력하기

③ 입력된 문자열의 단어 중 가장 긴 단어는 무엇인가요?(만드는 중)


2.배열

① 문자열을 가진 다차원 배열을 합쳐서 한 문장으로 출력하기(forEach+재귀)

function arrTostring(arr) {
  let result = []

  arr.forEach((i) => {
    if (Array.isArray(i)) {
      result.push(...arrTostring(i))
    } else {
      result.push(i)
    }
  });
  
  return result.join('')
}

let arr = ["I", " ", "l",["o", "v", "e", " ",["y", "o"], "u"]]

>"I love you"

② 인물 정보가 담긴 객체를 요소로 갖는 배열을 입력받아 최고령에 해당하는 사람의 이름과 나이를 출력하기(filter)

  • 조건 : 객체의 키(property)는 인물 이름이며, 객체의 값(value)은 인물의 나이입니다.
let names = [{ 'Alice': 20, 'Bob': 35, 'Helen': 40, 'Reon': 55 }];

function valueOutput(arr){

let maxValue = 0;
let maxUser = '';

arr.filter(function(x){
    for(let key in x){
       if ( maxValue < x[key]){
            maxValue = x[key];
            maxUser = key;
       }   
    }
  });
return `현재 ${maxUser}님이 최고령자이며 연세는 ${maxValue}입니다`
}

valueOutput(names);
> "현재 Reon님이 최고령자이며 연세는 55입니다"

③ 인물 정보가 담긴 객체를 요소로 갖는 배열을 입력받아 평균 나이를 출력하기(filter & reduce)

  • 조건 : 객체의 키(property)는 인물 이름이며, 객체의 값(value)은 인물의 나이입니다.
let names = [{ 'A': 20, 'B': 35, 'C': 41, 'D': 55, 'E':32 }];

function valueOutput(arr){

let avgAge = [];

arr.filter(function(x){ 
    for(let key in x){
            avgAge.push(x[key]);
       }   
    });

return avgAge.reduce((acc,cur) => acc+cur)/avgAge.length
}

valueOutput(names);
> 36.6

④ 특수문자를 포함한 문자열을 갖는 배열을 입력받아 해당 특수문자의 위치만 가진 배열 출력하기(filter&map)

// indexOf를 사용한 경우
function findThehash(ele){

let hashOnly = ele.filter(function(x) { 
   if( x.indexOf('#') !== -1 ){ 
     return x; 
   }
 }); 

return hashOnly.map(x => x.indexOf('#',0));
}

//includes를 사용한 경우
function findThehash(ele){

let hashOnly = ele.filter(x => x.includes('#')); 

return hashOnly.map(x => x.indexOf('#',0));
}
profile
차곡차곡 쌓아가는 나의 개발 기록

0개의 댓글