※자바스크립트 100제는 여기서 다운받았습니다.
입출력 결과
입력: 97 86 75 66 55 97 85 97 97 95 출력: 6
function students() {
// 받은 값을 배열로 정의
var scores = [...arguments];
// 각 값이 몇 개 있는지 확인
var num = {};
scores.forEach((x) => {
if (num[x]) {
num[x] = num[x] + 1;
} else {
num[x] = 1;
}
});
// 점수:개수 객체
// console.log(num);
// 점수:개수 객체의 key값(점수)의 배열
var numKey = Object.keys(num);
// 점수 배열의 정렬
var sortNum = numKey.sort((a, b) => {
return b - a;
});
// 점수가 가장 높은 세 개 값 구함(score1, score2, score3)
var score1 = sortNum[0];
var score2 = sortNum[1];
var score3 = sortNum[2];
// 점수:개수 객체에서 점수가 가장 높은 세 개 값이 몇 번째 인덱스에 있는지 구해야 함
// 점수:개수 객체에서 점수만 배열로 빼옴
var scores_num = Object.keys(num);
// 점수 배열에서 score1, score2, score3의 인덱스 구함
var index1 = scores_num.indexOf(score1);
var index2 = scores_num.indexOf(score2);
var index3 = scores_num.indexOf(score3);
// 점수:개수 객체에서 구한 인덱스에 위치한 value값들을 더함
console.log(
Object.values(num)[index1] + Object.values(num)[index2] + Object.values(num)[index3]
);
}
// **출력**
students(97, 86, 75, 66, 55, 97, 85, 97, 97, 95);
>6
arguments 활용 예시
function students() { var scores = [...arguments]; //scores에 매개변수 배열 할당 console.log(scores) } students(1,2,3);출력: [1, 2, 3]
Object 객체 활용 예시
var nums = { 이름1: 90, 이름2: 100, 이름3: 95} console.log(Object.keys(nums)); console.log(Object.values(nums)); console.log(Object.keys(nums)[1]); console.log(Object.values(nums)[1]);출력
['이름1', '이름2', '이름3']
[90, 100, 95]
이름2
100
indexOf 활용 예시
var nums = [10, 20, 30, 40, 50]; var i = nums.indexOf(10); console.log(nums[i]);출력: 10
Object 객체를 이용해 객체의 key값 혹은 value값의 배열을 구한 후, indexOf를 통해 인덱스 번호를 추출하여 특정 key값을 가진 index에 위치한 value값을 구하거나, 혹은 그 반대의 경우를 구할 수 있다.var nums = [10, 10, 10, 20, 20, 20, 30, 40, 50]; var result = {}; nums.forEach((x) => { if (result[x]) { result[x] = result[x] + 1; } else { result[x] = 1; } }); console.log(result);출력 : {10: 3, 20: 3, 30: 1, 40: 1, 50: 1}
var result={}를 통해 최종 출력할 빈 객체를 만들어준다.nums.forEach(콜백함수)를 통해 콜백함수를 각 배열마다 적용하게 한다.if(result[x])를 통해 result[x]가 존재하면 if문으로, 존재하지 않으면 else문으로 가게 한다.result에 존재하지 않으므로 else문을 향하여 result[10]=1이 된다. 그리하여 result는 {10:1} 객체가 되는 것이다.result에 존재하므로 result[10]은 if문을 통해 +1되어 result[10]은 2가 된다. result={10:2}var num = [1, 2, 50, 6, 24, 31]; var sortNum = num.sort((a, b) => { return a - b; }); console.log(sortNum);출력: [1, 2, 6, 24, 31, 50]
num.sort()할 시 첫 번째 글자부터 비교하여 [1, 2, 24, 31, 50]으로 정렬된다.sort는 배열 요소 두 가지를 a와 b 자리에 넣어 a-b를 한 후 음수가 나오면 a를 왼쪽으로, b를 오른쪽으로 넘기고 양수가 나오면 a를 오른쪽으로 b를 왼쪽으로 넘긴다. 이 작업을 반복한다.