고차함수 27번 getLongestElement

Judo·2020년 11월 14일
0
post-thumbnail
post-custom-banner

문제


문자열을 요소로 갖는 배열을 입력받아 배열에서 가장 긴 문자열을 리턴해야 합니다.

풀이 코드


	function getLongestElement(arr){
	/*
   * 1. arr 요소에 접근하여 각 요소의 length 를 가져온다.
        - arr.reduce(acc, cur)을 이용한다.
        - acc를 빈 배열로 두고 acc.length와 cur.length를 비교한다.
        - acc.length < cur.length 인 경우 return cur를 리턴한다.
        - return 값이 acc + cur 가 아니기 때문에 기존 acc에 + cur이 되지 않는다.
        - acc = cur 가 할당된다고 보면 됨.
        - reduce함수가 돌면서 가장 긴 길이의 문자열을 acc에 할당하는 개념이다.
   * 2. 가져온 length 배열 중 가장 긴 문자열을 가져옴.
	*/
    return arr.reduce(function(acc,cur){
    	if(acc.length < cur.length){
        	return cur;
        }else{
        	return arr;
        }
    },'');
      
	
}

어려웠던 점


  1. reduce 메소드는 값을 축적하는 개념으로만 이해하고 있었기 때문에 return cur or return acc만을 이용해 값을 축적시키지 않는 방법을 떠올리지 못했다.

KEY


  1. reduce()를 이용해 배열을 순회한다.
  2. 순회하면서 각 문자열의 길이를 비교하고 조건이 참인 경우에 return cur만 해줌으로써 값이 축적되지 않고 조건이 참인 경우에만 acc로 들어갈 수 있게 한다.
profile
즐거운 코딩
post-custom-banner

0개의 댓글