ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Javascript30 - Array Cardio Day 1
    Javascript 2021. 6. 20. 18:48

    Array Cardio Day 1

    배열의 메서드 몇가지를 사용해보면서 익혀보자.

     <script>
     const inventors = [
          { first: 'Albert', last: 'Einstein', year: 1879, passed: 1955 },
          { first: 'Isaac', last: 'Newton', year: 1643, passed: 1727 },
          { first: 'Galileo', last: 'Galilei', year: 1564, passed: 1642 },
          { first: 'Marie', last: 'Curie', year: 1867, passed: 1934 },
          { first: 'Johannes', last: 'Kepler', year: 1571, passed: 1630 },
          { first: 'Nicolaus', last: 'Copernicus', year: 1473, passed: 1543 },
          { first: 'Max', last: 'Planck', year: 1858, passed: 1947 },
          { first: 'Katherine', last: 'Blodgett', year: 1898, passed: 1979 },
          { first: 'Ada', last: 'Lovelace', year: 1815, passed: 1852 },
          { first: 'Sarah E.', last: 'Goode', year: 1855, passed: 1905 },
          { first: 'Lise', last: 'Meitner', year: 1878, passed: 1968 },
          { first: 'Hanna', last: 'Hammarström', year: 1829, passed: 1909 }
        ];
    
        const people = [
          'Bernhard, Sandra', 'Bethea, Erin', 'Becker, Carl', 'Bentsen, Lloyd', 'Beckett, Samuel', 'Blake, William', 'Berger, Ric', 'Beddoes, Mick', 'Beethoven, Ludwig',
          'Belloc, Hilaire', 'Begin, Menachem', 'Bellow, Saul', 'Benchley, Robert', 'Blair, Robert', 'Benenson, Peter', 'Benjamin, Walter', 'Berlin, Irving',
          'Benn, Tony', 'Benson, Leana', 'Bent, Silas', 'Berle, Milton', 'Berry, Halle', 'Biko, Steve', 'Beck, Glenn', 'Bergman, Ingmar', 'Black, Elk', 'Berio, Luciano',
          'Berne, Eric', 'Berra, Yogi', 'Berry, Wendell', 'Bevan, Aneurin', 'Ben-Gurion, David', 'Bevel, Ken', 'Biden, Joseph', 'Bennington, Chester', 'Bierce, Ambrose',
          'Billings, Josh', 'Birrell, Augustine', 'Blair, Tony', 'Beecher, Henry', 'Biondo, Frank'
        ];
    </script>

     

    1. 1500년대 태어난 발명가 리스트를 filter하기

    - inventor.year>1500과 inventor.year<1600 을 동시에 만족하면 true고 true면 a에 들어간다.

    <script>
        const a = inventors.filter(inventor =>inventor.year>1500 && inventor.year<1600);
        console.log(a);
    </script>

     

    2. 발명가의 성,이름이 합쳐진 배열을 map을 사용해서 만들기

    - map은 map 안의 function에서 수행한 값이 그대로 들어간다.

    <script>
        const array = inventors.map(inventor =>inventor.first+' '+inventor.last);
        console.log(array);
    </script>

     

    3. 생일이 이른 순서부터 나열되게 분류하기

    - sort 메서드 사용, sort((a,b)=>a>b? 1:-1) 하면 낮은 숫자부터 앞에 놓인다.

    <script>
        const sort = inventors.sort((a,b)=>a.year>b.year? 1:-1);
        console.log(sort);
    </script>

     

    4. 모든 발명가의 나이를 모두 더한 값을 구하기

    - reduce 메서드 사용, inventor.passed-inventor.year로 나이를 구한다. acc는 합친 값이 저장되며 0으로 초기화하고 진행한다.

    <script>
        const liveAll = inventors.reduce((acc,inventor) =>{return acc+inventor.passed-inventor.year},0);
        console.log(liveAll);
    </script>

     

    5. 나이 순서대로 작은 순부터 나열하기

    - sort 메서드 이용, 3번 방법과 동일하다.

    <script>
        const sortedbylived = inventors.sort((a,b)=>a.passed-a.year>b.passed-b.year? 1:-1);
        console.log(sortedbylived);
    </script>

     

    6. 거리명에 'de'가 들어간 거리 나열하기 

    - includes 메서드 이용

    <script>
        const array2 = ['street de','stuarfan'];
        for (street of array2) {
          if (street.includes('de')) {
            console.log(street);
          }
        }
    </script>

     

    7. 사람의 성을 알파벳 순으로 나열하기

    - sort 메서드와 split 메서드 이용

    - ,(반점)으로 나눈 성, 이름을 구조분해할당해서 저장하고 두 성 중에 어떤 성이 알파벳상으로 앞에 있는지 비교해서 리턴

    <script>
        const people = [
          'Bernhard, Sandra', 'Bethea, Erin', 'Becker, Carl', 'Bentsen, Lloyd', 'Beckett, Samuel', 'Blake, William', 'Berger, Ric', 'Beddoes, Mick', 'Beethoven, Ludwig',
          'Belloc, Hilaire', 'Begin, Menachem', 'Bellow, Saul', 'Benchley, Robert', 'Blair, Robert', 'Benenson, Peter', 'Benjamin, Walter', 'Berlin, Irving',
          'Benn, Tony', 'Benson, Leana', 'Bent, Silas', 'Berle, Milton', 'Berry, Halle', 'Biko, Steve', 'Beck, Glenn', 'Bergman, Ingmar', 'Black, Elk', 'Berio, Luciano',
          'Berne, Eric', 'Berra, Yogi', 'Berry, Wendell', 'Bevan, Aneurin', 'Ben-Gurion, David', 'Bevel, Ken', 'Biden, Joseph', 'Bennington, Chester', 'Bierce, Ambrose',
          'Billings, Josh', 'Birrell, Augustine', 'Blair, Tony', 'Beecher, Henry', 'Biondo, Frank'
        ];
        
        const sortbyAlpha = people.sort(function(alname,blname) {
          const [afirst,alast] = alname.split(', ');
          const [bfirst,blast] = blname.split(', ');
          return alast>blast?1:-1;
        });
        console.log(sortbyAlpha);
    </script>

     

    8. 탈것 종류별로 몇개 있는지 세기

    - reduce 메서드 이용

    - 초기값 {}, obj객체에 프로퍼티가 아직 없는 경우 생성해주고 그 프로퍼티값+1 해준다.

    <script>
        const data = ['car', 'car', 'truck', 'truck', 'bike', 'walk', 'car', 'van', 'bike', 'walk', 'car', 'van', 'car', 'truck' ];
        const sumUp = data.reduce(function(obj,vehicle) {
          if (!obj[vehicle]) {
            obj[vehicle] = 0;
          }
          obj[vehicle]++;
          return obj;
        },{});
        console.log(sumUp);
    </script>

     

    koan에서 퀴즈를 풀면서 array가 사용할 수 있는 메서드에 대해 배우고 여기에서 한 번 더 복습 완료

Designed by Tistory.