-
Javascript30 - Array Cardio Day 1Javascript 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가 사용할 수 있는 메서드에 대해 배우고 여기에서 한 번 더 복습 완료
'Javascript' 카테고리의 다른 글
코어 자바스크립트 개념 공부- alert, prompt, confirm을 이용한 상호작용 (0) 2021.07.01 Javascript30 - Flex Panels Image Gallery (0) 2021.06.21 Javascript30 - Playing WITH CSS VARIABLES AND JS (0) 2021.06.18 Javascript30 - CSS + JS CLOCK (0) 2021.06.17 Javascript30 - DRUM KIT (0) 2021.06.16