728x90
반응형
<!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>
728x90
반응형

'코딩일지 > WEB' 카테고리의 다른 글

HTML 날짜입력 메뉴 만들기  (0) 2022.12.25
HTML간단한 입력칸  (0) 2022.12.25
조건문  (0) 2022.12.25
이벤트(addEventListener)  (0) 2022.12.25
요소선택  (2) 2022.12.25

+ Recent posts

">