<!DOCTYPE html>
<html lang="ko">
<head>
<title>함수</title>
<meta charset="UTF-8">
<script>
// let 함수이름 = ({매개변수, ...}) => {{구현부}}
let sayHello = () => {
console.log('Hello');
}
let saySomething = (msg) => {
console.log(msg);
}
sayHello();
saySomething('Hello world!');
// 값 a와 b를 매개변수로 전달받아 그 합을 반환하는 함수 sum을 만드세요
let sum = (a, b) => {
return a + b;
}
console.log(sum(1, 2));
// let sum = (a, b) => a + b ; // 위 함수 축약
// 값 a를 매개변수로 전달 받아 그 수가 짝우인지의 여부를 벼ㅏ노한하는 함수 isEven을 만드세요.
// 값을 a를 매개변수로 받아 a가 짝수인지 여부를 반환하는 isEven함수를 만드세요.
let isEven = (a) => {
result = a % 2;
return a % 2 === 0;
console.log(result === 0);
}
console.log(isEven(10));
/// 값 a를 매개변수로 전달받아 a가 소수인지의 여부를 반환하는 isPrime 함수를 만드세요
// 소수 : 2개 이상의 자연수 x에 대해 x를 나누어 떨어지게 할 수 있는 자연수가 1과 x뿐인 수. 가령, 2, 3, 5, 7, 11, 13 등..
// let isPrime = (a) => {
// let divided = false;
// for (let i = 2; i < a; i++) {
// divided = !divided && a % i ===0;
// }
// return !divided;
// }
// console.log(isPrime(13));
let isPrime = (a) => {
let count = 0;
for (let i = 2; i < a; i++) {
num = a % i;
num === 0;
return count + 1;
}
return count === 1;
}
console.log(isPrime(3));
// 정수로 이루어진 배열을 매개변수로 전달 받아 그 중 홀수만을 그 값을 가지는 새로운 배열을 반환하는 filterOdds 함수를 만드세요.
/*
let nums = [ 1, 2, 3, 4, 5, 6, 7, 8];
let oddNums = filterOdds(nums);
console.log(oddNums); // [1, 3, 5, 6]
*/
// let filterOdds = (nums) => {
// let oddNums = [];
// for (let i = 0; i < nums.length; i++) {
// if (nums[i] % 2 > 0) {
// oddNums.push(nums[i]);
// }
// }
// return oddNums;
// };
// let nums1 = [1, 2, 3, 4, 5, 6, 7, 8];
// let nums2 = [50, 51, 52, 53, 54, 55];
// let oddNums1 = filterOdds(nums1);
// let oddNums2 = filterOdds(nums2);
// console.log(oddNums1); // [1, 3, 5, 7]
// console.log(oddNums2); // [51, 53, 55]
// 자연수로 이루어진 배열을 매개변수로 전달 받아 그 중 가장 큰 수를 반환하는 함수 getMax를 만드세요. 이떄 매개변수인 배열은 수자 순서대로 정렬되어 있지 않습니다.
// let getMax = ...
// let nums1 = [107, 36, 1198, 19];
// let nums2 = [960, 388, 3190, 55];
// console.log(getMax(num1)); //1190
// console.log(getMax(num2)); //3190
let getMax = (num) => {
let result = 0;
for (let i = 0; i < num.length; i++) {
if (result < num[i]){
result = num[i];
}
}
return result;
};
let nums1 = [107, 36, 1198, 19];
let nums2 = [960, 388, 3190, 55];
console.log(getMax(nums1)); //1190
console.log(getMax(nums2)); //3190
// 자연수로 이루어진 배열 nums 중 짝수만을 새로운 배열로 만들어 반환하는 filterEvens함수를 만드세요. 단 이떄 중괄호('{', '}') 를 사용 할 수 없습니다.
let nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let filterEvens = (a) => a.filter(x => x % 2 === 0);
console.log(filterEvens(nums));
let countries = {
au: {
area: 7688000,
name: '호주',
population: 2569
},
de: {
area: 357588,
name: '독일',
population: 8324
},
fr: {
area: 543940,
name: '프랑스',
population: 6739
},
gd: {
area: 243610,
name: '영국',
population: 6722
},
jp: {
area: 377975,
name: '일본',
population: 12580
},
ko: {
area: 100210,
name: '한국',
population: 5178
},
us: {
area: 9834000,
name: '미국',
population: 32950
},
};
// 단, countries 변수르 이용해야하며 이 변수의 쌍이 유동적을 ㅗ추가/삭제 되었을 때에도 아래 두 함수는 유연하게 대응하여야 한다. 즉, switch나 if 노가다 하지 말라는 뜻.
// 매개변수로 주어진 문자열 code와 일치하는 국가의 이름(name)을 반환하는 함수 codeToName을 만드세요. 단 이때 정의되지 않는 코드가 입력될 경우 '존재하지 않는 코드' 라는 문자열을 반환하세요.
// 가령, console.log(codeToName('ko')); '한국'
// console.log(codeToName('xy')); '존재하지 않는 코드'
// 매개변수로 주어진 문자열 name과 일치하는 국가의 코드(code)를 반환하는 함수 nameToCode를 만드세요. 단 이때 주어진 name을 가지는 오브젝트가 없을 경우 '존재하지 않는 이름' 이라는 문자열을 반환하세요.
// 가령, console.log(nameToCode('한국')); 'ko'
// console.log(nameToCode('러시아')); '존재하지 않는 이름'
let codeToName = (code) => {
let keys = Object.keys(countries);
let name = '존재하지 않는 이름';
keys.forEach(name => {
if(keys.indexOf(code) > -1){
name = countries[code].name;
}
})
return name;
};
console.log(codeToName('ko')); //'한국'
console.log(codeToName('xy')); //'존재하지 않는 코드'
let nameToCode = (name) => {
let keys = Object.keys(countries);
let code = '존재하지 않는 이름';
keys.forEach(key => {
if(countries[key].name === name){
code = key;
}
})
return code;
};
console.log(nameToCode('한국'));
console.log(nameToCode('러시아'));
let students = {
};
let addStudent = (id, name, age, contact) => {
students[id] = {
'name':name,
'age':age,
'contact':contact
};
};
console.log(addStudent('A', '김학생', 22, '010-0000-0000'))
console.log(addStudent('B', '이학생', 62, '010-7000-0030'))
console.log(addStudent('C', '박학생', 54, '010-7422-0030'))
console.log(students)
// 다음 매개변수 id, name, age, contact 총 네 개를 전달받아 위 'students' 오브젝트에 추가하는 함수 addStudent를 만드세요. 단 , 'students'오브젝트 학생을 추가할 때에는 위 매개변수 중 id 값을 키로 사용하고 그 값은, name, age, contact 키 총 세개를 위 매개변수 값과 쌍이되도록 가지는 오브젝트입니다. 또한 위 매개변수 id를 이미 키로 가지고 있다면 그 값을 수정하도록 합니다.
// 가령, addStudent('A', '김학생', 22, '010-0000-0000');을 호출하면 위 'students' 오브젝트의 구조는 아래와 같이 변합니다.
/*
{
'A':{
name: '김학생',
age: 22,
contact: '010-0000-0001'
}
}
*/
// 위 상태에서 addStudent('A', '이학생', 30, '010-0000-0001'); 를 호출하게 되면 이미 students 오브젝트에는 'A'를 키로 가지는 쌍이 있음으로 그 값의 내용만 수정하여 아래와 같이 변경되게 합니다.
/*
{
'A':{
name: '이학생',
age: 30,
contact: '010-9999-9999'
}
}
*/
let printStudent = (id) => {
let keys = Object.keys(students);
if(keys.indexOf(id) > -1){
let student = students[id];
console.log('이름 : ' + student.name)
console.log('나이 : ' + student.age)
console.log('연락처 : '+ student.contact)
}
else {
console.log('일치하는 학생이 없습니다.')
}
}
console.log(printStudent('A'));
console.log(printStudent('ㅁㄴㅇ'));
// id 를 매개변수로 받아 학생의 정보를 출력하는 함수 printStudent를 만드세요
// printStusent('A') 의 결과는 다음과 같습니다
/*
이름: 김학생
나이: 20
연락처: 010-0000-0000
*/
// 단 이 때, 전달 받은 id와 일치하는 학생이 없다면 '일치하는 학생이 없습니다.' 를 출력하세요
// 문자열 합치기는 java 와 같이 '+' 기호를 사용합니다.
// id를 매개변수로 받아 학생을 삭제하는 함수 deleteStudent를 만드세요. 단, 그러한 학생이 있어 삭제했을 경우 true를, 그런 학생이 없이 삭제하지 못했을 경우 false를 반환하세요
// deleteStudent('A');//true
// deleteStudent('sdf');//false
let deleteStudent = (id) => {
let keys = Object.keys(students);
if(keys.indexOf(id) > -1){
delete students[id];
return true;
}
else {
return false;
}
};
// id 를 매개변수로 받아 해당 id를 키로 가지는 학생이 있는가에 대한 여부를 반환하는 함수 studentExists를 만드세요
// studentExists('A')//
// studentExists('ABSD')//
/////////////////////////////////////////
// let studentExists = (id) => {
// let keys = Object.keys(students);
// if(keys.indexOf(id) > -1){
// return true;
// }
// else {
// return false;
// }
// }
/////////////////////////////////////////
// let studentExists = (id) => {
// let keys = Object.keys(students);
// let result = keys.indexOf(id) > -1
// return result;
// }
/////////////////////////////////////////
let studentExists = (id) => (Object.keys(students)).indexOf(id) > -1
console.log(studentExists('A'))// true
console.log(studentExists('Aasd'))//false
// students 오브젝트가 가지고 있는 모든 쌍을 출력하는 함수 printAllStudent를 만드세요.
//가령 현재 상황에서 printAllStudent()를 호출하면 다음과 같이 출력이되면 됩니다.
/*
이름: 김학생
나이: 20
연락처: 010-0000-0000
--------------------
이름: 김학생
나이: 20
연락처: 010-0000-0000
*/
//기존에 작성되어 있는 코드를 활용하고, 새로 작성하는 코드 내에서는 'console'이라는 키워드를 단 한번만 사용하세요.
// 논리적을 모든 쌍에 어떻게 접근할 것인가.?
// 언제 구분선을 출력하고 언제 하지 않아야 하는가?
// 외부 코드를 활용하여 학생 정보를 어떻게 출력할 것인가?
let printAllStudent = () => {
let keys = Object.keys(students);
for (i= 0; i < keys.length; i++) {
let key = keys[i];
printStudent(key);
if(i < keys.length -1) {
console.log('------------------');
}
}
};
console.log(printAllStudent())
</script>
</head>
<body>
</body>
</html>