Javascript 30 - Day 4
Javascript30 Day4 - Array Cardio Day 1
Array 자료형에 내장된 여러 유용한 함수들을 사용하면, 일반 반복문으로 해결하던 작업들을 더 간단하게 수행할 수 있기 때문에 잘 활용하는게 좋다.
예제 Data
1 | const inventors = [ |
1. Array.proottype.filter()
지정된 filter function 조건을 부합하는 element만을 포함한 새로운 Array를 반환한다.
- Filter the list of inventors for those who were born in the 1500’s
1
2const fiftiesPeople = inventors.filter(inventor => 1500 <= inventor.year && inventor.year < 1600)
console.log(fiftiesPeople);
2. Array.prototype.map()
Array의 모든 element에 대해 주어진 function을 취한 값을 가지는 새로운 Array를 반환한다.
- Give us an array of the inventors first and last names
1
2
3
4const nameMap = inventors.map(inventor => inventor.first + ' '+inventor.last);
//또는
const nameMap2 = inventors.map(inventor => `${inventor.first} ${inventor.last}`);
console.log(nameMap);
map & filter
두 메서드는 함께 사용되는 경우가 많다.
- create a list of Boulevards in Paris that contain ‘de’ anywhere in the name
위키피디아 링크여기서 주의할 점은,1
2
3
4
5const category = document.querySelector('.mw-categories');
const links = Array.from(category.querySelectorAll('a'));
const de = links
.map(link=> link.textContent)
.filter(streetName => streetName.includes('de'));querySelectorAll()
의 반환값으로 NodeList가 반환되고 NodeList에는 map 메서드가 없다. 따라서 이를Array.from()
을 사용해 Array로 변환한 후에 map, filter 작업을 해준 것이다.
Array로 변환하는 방법은 Array.from()
외에도 []
로 감싸주는 것만으로도 가능하다.
3. Array.prototype.sort()
지정한 함수에 따라 Array element들을 정렬하거나 반환한다.
- Sort the inventors by birthdate, oldest to youngest.
1
2
3
4inventors.sort((a,b)=>(a.year-b.year))
//또는
const ordered = inventors.sort((a,b)=>(a.year> b.year? 1 : -1));
console.log(inventors); - Sort the inventors by years lived = 역순 정렬
1
2yearOrdered = inventors.sort((a,b)=>((b.passed-b.year) - (a.passed-a.year) ))
console.table(yearOrdered);
4. Array.prototype.reduce()
지정한 함수에 따라 Array element들에 적용하여 하나의 result를 반환한다.
예를 들어 Array의 모든 값들을 더할 때 사용할 수 있다.
- How many years did all the inventors live all together?
1
2
3
4
5const totalYears = inventors.reduce((total, inventor) => {
console.log(total);
return total + (inventor.passed - inventor.year);
}, 0) //0 is initial value, 초기화 시키지 않으면 오류 발생
console.log(totalYears); - Sum up the instances of each of these example data
Example Data
1 | const data = ['car', 'car', 'truck', 'truck', 'bike', 'walk', 'car', 'van', 'bike', 'walk', 'car', 'van', 'car', 'truck' ]; |
1 | const sumData = data.reduce((obj, item)=> { |
data에 있는 element를 하나씩 순회하면서 obj에 해당 item이 key 값으로 존재하는지 확인 후 없는 경우 ‘0’으로 새로 생성한다.
이 블로그의 모든 글은 CC BY-NC-SA 4.0 라이선스를 따르며, 별도로 명시되지 않는 한 모든 권리를 보유합니다. 재배포 시 출처를 명시해 주세요: StudyYeong.