myLanguages.js (7kyu 84)

Codewars 알고리즘 풀이


Problem

  • You are given a object containing some languages and your test results in the given languages.
    • 몇몇 언어가 포함된 객체가 제공된다.
  • Return the list of languages where your test score is at least 60, in descending order of the results.
    • 테스트 점수가 60 이상인 언어 배열을 내림차순으로 반환한다.


Solution 01

function myLanguage(obj) {
  let result = [];
  
  for (let i in obj) {
    if (obj[i] > 59) {
      result.push(i);
    }
  }
  return result.sort((a, b) => obj[b] - obj[a]);
}

myLanguage({ c: 10, Java: 65, Ruby: 80 });   // ['Ruby', 'Java']
myLanguage({ Python: 60, JavaScript: 99 });  // ['JavaScript', 'Python']

push(): 배열의 끝에 새 element를 추가하고, 새로운 길이를 반환한다.

sort(): 배열의 element를 정렬한 후, 그 배열을 반환한다.


Solution 02

function myLanguage(obj) {
  return Object.keys(obj).filter(i => obj[i] > 59).sort((a, b) => obj[b] - obj[a]);
}

myLanguage({ c: 10, Java: 65, Ruby: 80 });   // ['Ruby', 'Java']
myLanguage({ Python: 60, JavaScript: 99 });  // ['JavaScript', 'Python']

Object.keys(): 객체 고유 속성의 이름을 배열로 반환한다.

filter(): 테스트를 통과한 배열의 각 값을 모아, 새 배열로 반환한다.