상세 컨텐츠

본문 제목

JS 자바스크립트 Sort, pop 가장 긴 문자열 반환해주기

Coding/JS

by hwlink 2021. 11. 13. 17:14

본문

 

Q.find_longest_word 함수를 만들어 주세요. 주어진 리스트 안에 있는 단어 중 가장 긴 단어를 찾을 수 있도록 함수를 완성해주세요.

function find_longest_word(arr){
  let max = arr[0];
  for(let i=1; i < arr.length; i++){
    if(arr[i].length > max.length){
      max = arr[i];
    }
  }
  return max;
}
console.log(find_longest_word(["PHP", "Exercises", "Backend"]))

1차로 기준이 되는 max라는 변수를 지정해두고 배열값들은 순회하며 비교해주어 초기값보다 큰 값만 max에 담아 반환해주는 함수를 구성했다.

 

동기중 sort 매서드를 이용하여 훨씬 간단하게 한 방법을 보고 정리해둘려한다. 

 

Array.prototype.sort()

sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.

 

Sorting algorithm - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Algorithm that arranges lists in order In computer science, a sorting algorithm is an algorithm that puts elements of a list into an order. The most frequently used orders are numerica

en.wikipedia.org

const months = ['March', 'Jan', 'Feb', 'Dec'];
months.sort();
console.log(months);
// expected output: Array ["Dec", "Feb", "Jan", "March"]

const array1 = [1, 30, 4, 21, 100000];
array1.sort();
console.log(array1);
// expected output: Array [1, 100000, 21, 30, 4]

sort() 특징 mdn

compareFunction이 제공되지 않으면 요소를 문자열로 변환하고 유니 코드 코드 포인트 순서로 문자열을 비교하여 정렬됩니다. 예를 들어 "바나나"는 "체리"앞에옵니다. 숫자 정렬에서는 9가 80보다 앞에 오지만 숫자는 문자열로 변환되기 때문에 "80"은 유니 코드 순서에서 "9"앞에옵니다.

compareFunction이 제공되면 배열 요소는 compare 함수의 반환 값에 따라 정렬됩니다. a와 b가 비교되는 두 요소라면,

  • compareFunction(a, b)이 0보다 작은 경우 a를 b보다 낮은 색인으로 정렬합니다. 즉, a가 먼저옵니다.
  • compareFunction(a, b)이 0을 반환하면 a와 b를 서로에 대해 변경하지 않고 모든 다른 요소에 대해 정렬합니다. 참고 : ECMAscript 표준은 이러한 동작을 보장하지 않으므로 모든 브라우저(예 : Mozilla 버전은 적어도 2003 년 이후 버전 임)가 이를 존중하지는 않습니다.
  • compareFunction(a, b)이 0보다 큰 경우, b를 a보다 낮은 인덱스로 소트합니다.
  • compareFunction(a, b)은 요소 a와 b의 특정 쌍이 두 개의 인수로 주어질 때 항상 동일한 값을 반환해야합니다. 일치하지 않는 결과가 반환되면 정렬 순서는 정의되지 않습니다.

 

function find_longest_word(arr){
 const result = arr.sort( (a,b)=>{ return a.length - b.length} )
 const longestWord = result.pop();
 return longestWord;
}

console.log(find_longest_word(["PHP", "Exercises", "Backend"])) 
// --> "Exercises"

sort와 비교함수를 사용하여 length 기준으로 요소들을 오름차순 정렬한다.

오름차순이므로 배열의 마지막값이 length가 가장 긴 'Exercises'가 위치한다.

 const longestWord = result.pop(); 을 이용하여 가장 마지막 요소를 longestWord에 저장하여 리턴해준다.

 

 

 

 

관련글 더보기