[javascript30] Array Cardio Day 1
4614 단어 javascript30javascript30
1. Array Cardio Day 1
- javascript에서 제공하는 배열 관련 기능들을 연습해보자
2. 전체 코드 및 내용
filter
filter
: 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환* 익명함수 사용 const fifteenOld = inventors.filter(function (inventor) { if (inventor.year >= 1500 && inventor.year < 1600) { return true;}});
* 화살표 함수 사용 const fifteen = inventors.filter(inventor => (inventor.year >= 1500 && inventor.year < 1600)); console.table(fifteen);
=> year가 해당 범위 내에 든 요소들만 반환된다.
map
map
: 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환const fullNames = inventors.map(inventor => inventor.first + " " + inventor.last) console.log(fullNames)
=> inventor의 first 와 last 합을 반환
sort1
sort
: 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환* 익명함수 사용 const orderedOld = inventors.sort(function (a, b) { if (a.year > b.year) { return 1; } else {return -1;} })
* 화살표 함수 사용 const ordered = inventors.sort((a, b) => a.year > b.year ? 1 : -1) console.log(ordered)
=> year 로 ordering되어 반환
sort2
const oldest = inventors.sort(function (a, b) { const lastGuy = a.passed - a.year; const nextGuy = a.passed - b.year; return lastGuy > nextGuy ? -1 : 1; }) console.table(oldest)
==> sort함수 내에 로직을 추가하여 구현 가능하다
sort3
const alpha = people.sort((lastOne, nextOne) => { const [aLast, aFirst] = lastOne.split(', '); const [bLast, bFirst] = nextOne.split(', '); return aLast > bLast ? -1 : 1; }) console.log(alpha)
==> sort함수 내에 로직을 추가하여 구현 가능하다
reduce
reduce
: 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환- reducer? : 이전 상태와 동작을 받아, 새 상태를 리턴함 ( 누적 처리 )
* 반복문 형태로 처리 var totalYearsOld = 0; for (let i = 0; i < inventors.length; i++) { totalYearsOld += inventors[i].year; }
*reduce 사용 const totalYears = inventors.reduce((total, inventor) => { return total + (inventor.passed - inventor.year) }, 0) console.log(totalYears)
=> inventor의 생존년을 계산하여 더함
브라우저 상에서 filter 적용 (dom control)
const category = document.querySelector('.mw-category'); const links = [...category.querySelectorAll('a')]; const de = links.map(link => link.textContent).filter(streetName => streetName.includes('de')); 1. dom에서 class = mw-category 인 요소를 category로 정한다. 2. category 내 모든 a태그 요소를 links로 정한다. 3. links의 모든 요소들의 textContent에 대해(map) de를 포함하고 있는 요소를 모아 새 배열로 반환한다(filter)
- 결과
reduce로 누적 구현
const data = ['car', 'car', 'truck', 'truck', 'bike', 'walk', 'car', 'van', 'bike', 'walk', 'car', 'van', 'car', 'truck']; const transportation = data.reduce(function (obj, item) { if(!obj[item]){ obj[item] = 0; } obj[item]++; return obj; }, {}) console.log(transportation);
Author And Source
이 문제에 관하여([javascript30] Array Cardio Day 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hadoyaji/javascript30-Array-Cardio-Day-1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)