-
320x100
๐ฅJavascript 30 - Day 04๐ฅ
Day 04๋ ๋ฐฐ์ด ๊ด๋ จ ๋ฉ์๋๋ฅผ ๊ฐ๊ณ ๋ ธ๋ ์๊ฐ์ด ๋๊ฒ ์ต๋๋น :->
๊ธฐ๋ณธ html, js ๋ด์ฉ์ ์ฌ๊ธฐ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
1. filter() - ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์ ๋ฐฐ์ด ๋ง๋ค๊ธฐ
const people = [ { 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 }, { first: 'Sherlock', last: 'Holmes', year: 1854, passed: 1957 }, { first: 'John ', last: 'Watson', year: 1852, passed: 1929 }, ];
์ฒซ๋ฒ์งธ๋ก ํด๋ณผ ๊ฑด, people ๋ฐฐ์ด์์ 1500๋ ๋์ ํ์ด๋ ์ธ๋ฌผ๋ง ์ถ๋ ค์ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ง๋๋ ๊ฒ์ ๋๋ค. ์ด๋ ์ฌ์ฉํ ๋ฉ์๋๋
filter()
์ ๋๋ค.
filter()
๋ฉ์๋๋ ์ฃผ์ด์ง ํ๋ณ ํจ์๋ฅผ ํต๊ณผํ๋ ์์๋ฅผ ๋ชจ์ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ง๋ค์ด ๋ฐํํด์ค๋๋ค. (*MDN)const fiften = people.filter();
์ด ๋ฉ์๋๋ ์ฝ๋ฐฑํจ์๋ฅผ ํ์๋ก ํ๋ฉฐ, ์ด ํจ์๋ ์ต์ 1๊ฐ์ ์ธ์๋ฅผ ํ์๋ก ํฉ๋๋ค.
arr.filter(callback(element[, index[, array]])[, thisArg])
์ syntax์์ element๊ฐ ๋ฐ๋ก ํ์ ์ธ์์ด๋ฉฐ, ์ฒ๋ฆฌํ ํ์ฌ ์์๋ฅผ ๋ปํฉ๋๋ค.const fiften = people.filter(person=>{});
๊ทธ๋ผ ์ ์ฝ๋์์ filter ๋ฉ์๋๊ฐ ์คํ๋์ ๋, ์ฒซ๋ฒ์งธ๋ก ์ ํ๋๋ 'person'์ ๋ฌด์์ผ๊น์?
{ first: 'Albert', last: 'Einstein', year: 1879, passed: 1955 }
๊ฐ ํด๋น๋ฉ๋๋ค. ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๊ฐ ํ์๋ก ํ๋ ์ ๋ณด๋ year์ ํด๋นํ์ฃ . ๊ทธ๋ผperson.year
๋ก ์ ๊ทผํ๋ฉด ๋๊ฒ ๋ค์!const fiften = people.filter(person=>{ if(person.year >=1500 && person.year <=1599){ return true; } });
filter()
๋ ์ฃผ์ด์ง ํ๋ณ ํจ์๋ฅผ ํต๊ณผํ๋, ์ฆ ํจ์ ์คํ ํ ๊ฒฐ๊ณผ๊ฐ์ด true์ธ ์์๋ง ๊พธ๋ ค์ ๋ฐฐ์ด๋ก ๋ง๋ค์ด์ค๋์ผ๋return true
๋ฅผ ์์ฑํด์ค๋๋ค.
๋๋ ์๋์ ๊ฐ์ด ์งง๊ฒ ์์ฑํด๋ ๋๊ณ ์!const fiften = people.filter(person=> (person.year >=1500 && person.year <=1599) );
console.log(fiften)
์ผ๋ก ์ฝ์์ ์ฐ์ด๋ณด๋ฉด ์ ๋ฐฐ์ด์ด ์ ๋์จ ๊ฑธ ๋ณผ ์ ์์ต๋๋ค.
2. map() - ํจ์ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์ ์ ๋ฐฐ์ด ๋ง๋ค๊ธฐ
์ด๋ฒ์๋ people ๋ณ์์ ์ฌ๋๋ค์ ์ฑ๊ณผ ์ด๋ฆ์ ํฉ์น ๋ค์, ๊ทธ๊ฑธ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ง๋ค์ด๋ณด๊ฒ ์ต๋๋ค. ์ด๋ ์ฌ์ฉํ ๋ฉ์๋๋
map()
์ ๋๋ค. (*MDN)๊ฐ๋จํ๊ฒ ์ฐ์๋ฉด, ๋ฐฐ์ด ์์ ๊ฐ ์์์๊ฒ ์ด๋ค ํจ์๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์คํ์ํค๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ๋ฉ์๋์ ๋๋ค. ์๋ฅผ ๋ค์ด,
var arr = [1,2,3]
์ด ์์ ๋ ์ฌ๊ธฐ์ ๊ฐ๊ฐ 2๋ฅผ ๊ณฑํ๋ ํจ์๋ฅผ ์คํ์ํค๋ ค๊ณ ํฉ๋๋ค. ์ด๋arr.map(x=>x*2)
๋ฅผ ์จ์ฃผ๋ฉด ๋ฐฐ์ด ๋ด ๊ฐ๊ฐ์๊ฒ x2๋ฅผ ํ๋ ํจ์๊ฐ ์คํ๋๋ฉฐ ๊ทธ ๊ฐ์ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ฐํํด์ค๋๋ค.map()์ ์ฝ๋ฐฑํจ์๋ ์ต์ 1๊ฐ์ ์ธ์๋ฅผ ํ์๋ก ํ๋ฉฐ, ์๋ ์ฝ๋์์๋ person์ด ํด๋นํฉ๋๋ค. filter()์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฒ๋ฆฌํ ํ์ฌ ์์๋ฅผ ๋ปํฉ๋๋ค.
const fullNames = people.map(person => (person.first + ' ' + person.last) ); console.log(fullNames);
๊ฐ๋จํ๋ค์ :)
3. sort() - ์ค๋ฆ์ฐจ๋ ๋ด๋ฆผ์ฐจ๋ก ๋ฐฐ์ด ์ ๋ฆฌํ๊ธฐ
๊ทธ๋ผ ์ด์ people ๋ด ์ธ๋ฌผ๋ค์ ์ถ์์ฐ๋ ์์ผ๋ก ์ ๋ ฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋จผ์ ํ์ด๋ ์๋๋ก ๋์ดํ๋ ๊ฑฐ์ฃ . ์ฌ๊ธฐ์๋
sort()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
์ด ๋ฉ์๋๋ ๋ฐฐ์ด์ ์์๋ฅผ ์ ๋ ฌํ ํ ๊ทธ ๋ฐฐ์ด์ ๋ฐํํ๋๋ฐ์, ๊ธฐ๋ณธ์ ์ผ๋ก๋ ๋ฌธ์์ด์ ์ ๋์ฝ๋ ์ฝ๋ ํฌ์ธํธ๋ฅผ ๋ฐ๋ฆ ๋๋ค.
(์์ธํ ๊ฑด MDN์ ๋ด ์๋น!)const str = ['๋ฆฌ', '๋ฝ', '์ฟ ', '๋ง']; const num = [9, 365, 14]; str.sort(); num.sort(); console.log(str); console.log(num); /* ๊ฒฐ๊ณผ: > Array ["๋ฝ", "๋ฆฌ", "๋ง", "์ฟ "] > Array [14, 365, 9] */
์๋ const num์ด ์ฌ๋ฐฐ์ด๋ ๋ชจ์ต์ด ๋ณด์ ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ ํฌ๊ฐ ์ํ๋ ๊ฑฐ๋ ์ข ๋ค๋ฅด์ง ์๋์ฌ;ใ ; 365๋ 9๋ณด๋ค ํฌ์์์?! ๊ทธ๋์ ์ฌ๊ธฐ์๋ค ๋งค๊ฐ๋ณ์๋ก ํจ์๋ฅผ ํ๋ ์ ๋ฃ์ด์ค์๋ค.
์ด๊ฑธcompareFunction
์ด๋ผ๊ณ ํ๋๋ฐ์, ์ด๊ฒ ์๋ค๋ฉด ์ธ๊ธํ๋ฏ ์ ๋์ฝ๋ ์ฝ๋ ํฌ์ธํธ ์๋๋ก ์ ๋ ฌ๋ฉ๋๋ค. ์ซ์๋ ๋ฌธ์์ด๋ก ๋ณํ๋๊ธฐ ๋๋ฌธ์ "365"๊ฐ "9"๋ณด๋ค ๋จผ์ ์ค๋ ๊ฑฐ๊ณ ์!๋ณดํต
compareFunction(a, b)
ํํ๋ก ์ฐ์ด๋๋ฐ, ์ด ๊ฐ์ด 0๋ณด๋ค ํฌ๊ณ ์์์ง์ ๋ฐ๋ผ ์ ๋ ฌ ์์๊ฐ ๋ฌ๋ผ์ง๋๋ค.- compareFunction(a, b)์ด 0๋ณด๋ค ์๋ค๋ฉด: a -> b ์์
- compareFunction(a, b)์ด 0๋ณด๋ค ํฌ๋ค๋ฉด : b -> a ์์์์ธํ ๊ฑด ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์ ์ดํด๋ด ์๋ค+_+
const ordered = people.sort((a,b)=>{})
์, ์ฌ๊ธฐ ์ ๋ก ํ์ฆ์ ์กด ์์จ(ใ ใ ใ ใ ใ ) ๋ ๋ช ์ด ์์ต๋๋ค. ๋์ ์ถ์์ฐ๋๋ ๊ฐ๊ฐ 1854๋ , 1852๋ ์ ๋๋ค(์์จ์ด ํ์ด์๊ตฌ๋...)
์ด๊ฑธ a๋ b๋ผ๊ณ ์น๊ณ ๋น๊ตํด ๋ด ๋๋ค. ๋น์ฐํ a๊ฐ ๋ ํฌ๋ฏ๋ก, a(1854) > b (1852)๋ผ๊ณ ํํํ ์ ์๋ค์.
์ด๋ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฑด ์ถ์์ฐ๋๊ฐ '๋น ๋ฅธ'์ ๋ถํฐ์ด๋ฏ๋ก b->a ์์ผ๋ก ์ ๋ ฌ๋์ด์ผ ํฉ๋๋ค. ๊ทธ๋์ a > b ์ ๊ฒฐ๊ณผ๋ 0๋ณด๋ค ์ปค์ผํฉ๋๋ค. ์ฝ๋๋ก ํํํ๋ฉด ์ด๋ ๊ฒ ๋ค์.if(a > b){ return 1; }
๋ค๋ฅธ ์ธ๋ฌผ์ ๊ฐ์ง๊ณ ๋น๊ตํด๋ด ์๋ค. ๊ฐ๋ฆด๋ ์ค(a)๋ 1564๋ , ์์ด์(b)์ 1643๋ ์์ ๋๋ค. a.year < b.year์ ํด๋นํ๋ค์. ์ด ๊ฒฝ์ฐ a -> b์์ผ๋ก ์ ๋ ฌ๋์ด์ผ ํ๋ฏ๋ก ๋ฆฌํด๊ฐ์ 0๋ณด๋ค ์์์ผํฉ๋๋ค.
if(a.year < b.year){ return -1; }
์ ์ด์ ์ด๊ฑธ ๊ณ ๋๋ก~ sort()๋ฉ์๋์ ๋ฃ์ด์ค์๋ค.
const ordered = people.sort((a,b)=>{ if(a.year > b.year) { return 1; } if (a.year < b.year) { return -1; } return 0; /*๋ ๊ฐ์ด ๊ฐ์ ๋*/ console.log(ordered); })
๋ง์ฝ ์ค๋ฆ์ฐจ์์ด ์๋๋ผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ณ๊ฒฝํ๊ณ ์ถ๋ค๋ฉด ์ ๋ฆฌํด๊ฐ๋ง ์๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ๋๊ฒ ๋ค์. ๊ตฟ๊ตฟ!
4. reudce() - ๋ฐฐ์ด์ ์์ ๊ฐ์ ๋์ ํ์ฌ ๊ณ์ฐํ๊ธฐ
์ด๋ฒ์๋ ์ธ๋ฌผ๋ค์ด ์ฐ ํ์๋ฅผ ์ ์ธ๋ถ ํฉ์ณ๋ณด๋ ค๊ณ ํฉ๋๋ค.
reduce()
๋ฉ์๋๋ฅผ ์ธ ๊ฑด๋ฐ์, ์์ธํ ๊ฑด ์ญ์๋ MDN์๊ฒ ํ ์ค์ฐโ์ด reduce()๋ ES6๋ถํฐ ์ถ๊ฐ๋ ๊ฑด๋ฐ์, ์ข ๋นํฐ์งํ, ๊ทธ๋ฌ๋๊น ์๋ ๋ฐฉ์์ผ๋ก ์์ฑํ๋ฉด ์ด๋ ๊ฒ ๋ค์.
var totalYears = 0; for (var i=0; i<people.length; i++){ totalYears += people[i].year }
reduce()์ ์ฝ๋ฐฑํจ์๋ ์ต์ ๋ ๊ฐ์ ์ธ์๋ฅผ ํ์๋กํ๋ฉฐ,
accumulator
(๋์ ๋ ๊ฐ)๊ณผcurrentValue
๋ฐฐ์ด ๋ด ํ์ฌ ์ฒ๋ฆฌ๋๊ณ ์๋ ์์์ ๋๋ค.const totalYears = people.reduce((total, person)=>{})
์ธ๋ฌผ๋ค์ด ์ผ๋งํผ ์ด์๋์ง ์๋ ค๋ฉด '์๋ชฐ๋ ๋ - ์ถ์๋ ๋'๋ฅผ ํ๋ฉด ๋๊ฒ ์ฃ ?!
const totalYears = people.reduce((total, person)=>{ return total + (person.passed - person.year) }); console.log(totalYears);
์ ๊ทธ๋ฌ๋ฉด ๋ฆฌํด๊ฐ์ด ์ข ์ด์ํ๊ฒ ๋์ค๋๋ฐ์?! ์ด๋ด ๋ ๋นํฉํ์ง๋ง๊ณ ์ด๊ธฐ๊ฐ์ ๋ฃ์ด์ค๋๋ค!
const totalYears = people.reduce((total, person)=>{ return total + (person.passed - person.year) }, 0); console.log(totalYears);
5. sort()
์ด์ฏค๋๋ ์ธ๋ฌผ๋ค ๊ฐ์ด๋ฐ ๋๊ฐ ๊ฐ์ฅ ์ค๋ ์ด์๋์ง ๊ถ๊ธํ๋ค์ใ ใ ใ ใ ใ sort()๋ฉ์๋๋ฅผ ์จ์ ์ดค๋ฅด๋ฅต ์ ๋ ฌํด๋ณด์ฃ .
const oldest = people.sort((a,b)=>{ const a_lifeTime = a.passed - a.year; const b_lifeTime = b.passed - b.year; if(a_lifeTime > b_lifeTime) { return -1; } if(a_lifeTime < b_lifeTime) { return 1; } return 0; }); console.log(oldest);
์๋ช ์ ๊ณ์ฐํด์ผํ๊ธฐ ๋๋ฌธ์ lifeTime์ด๋ผ๋ ๋ณ์๋ฅผ ๋ง๋ ๋ค์ ๋น๊ตํด์คฌ์ต๋๋ค. ํ์ฆ์จ ์ฅ์ํ์ จ๋ค์ฌใ ใ ใ ใ ใ
6. includes()
์ด๋ฒ์๋ ๊ธฐ์กด people ๋ณ์ ๋์ ๋งํฌ์ ๋์ด์๋ ๋ชฉ๋ก์ ๊ฐ์ง๊ณ ์์ ํด๋ณด๊ฒ ์ต๋๋ค. ์ธ๋ฌผ๋ค ์ค ์ด๋ฆ์ 'de'๊ฐ ๋ค์ด๊ฐ๋ ์ฌ๋๋ง ๋ชจ์์ ์ ๋ฐฐ์ด๋ก ๋ง๋ค๊ณ ์ ํฉ๋๋ค.
์, ์ฌ๊ธฐ์ categoryLinks๋ ๋ฐฐ์ด์ผ๊น์? ์๋น ,const category = document.querySelector(".mw-category"); const categoryLinks = category.querySelectorAll("a");
NodeList
์ ๋๋ค. ๊ทธ๋์ ๋ฐฐ์ด ๋ฉ์๋๋ฅผ ์ฐ๋ ค๋ฉด ์๋ฅผ ์ผ๋จ ๋ฐฐ์ด๋ก ๋ง๋ค์ด์ค์ผํฉ๋๋ค. ์..... ๋คํ์ค๋ฝ๊ฒ๋ ES6์์ ์ถ๊ฐ๋from()
๋ฉ์๋๊ฐ ๊ตฌ์์ ์๊ธธ์ ๊ฑด๋ค๋ค์....โ (*MDN)const categoryLinks = Array.from(category.querySelectorAll("a"));
๊ทธ๋ผ [a, a, a...]์ ๊ฐ์ด ๋ฐฐ์ด์ด ๋ง๋ค์ด์ก์ ํ ๋ฐ ์ฌ๊ธฐ์ ํ์ํ ์ ๋ณด๋
textContent
์ ๋๋ค. ์ด๊ฑธ ๊ฐ์ ธ์ค๋ ค๋ฉด ์์ ๊ฐ๊ฐ์๊ฒ ํจ์๋ฅผ ์คํ์ํค๋,map()
ํจ์๊ฐ ํ์ํ๊ฒ ๋ค์.const categoryLinksText = categoryLinks.map(link=>link.textContent);
์ฌ๊ธฐ์ ์ ๊น. '์? ๊ตณ์ด ๋ฐฐ์ด๋ก ์ ๋ง๋ค๊ณ forEach ์จ๋ ๋์ง ์์?' ๋ผ๋ ์๊ฐ์ด ๋ค...์๋๋ฐ์(๋ป์ญ)
forEach()
๋ ๋ฆฌํด๊ฐ์ดundefined
์ธ ๋ฐ๋ฉด์,map()
์ ์ฝ๋ฐฑํจ์์ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋ ์๋ก์ด ๋ฐฐ์ด์ ๋ฆฌํดํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ผ๋ถ๋ฌ map()์ ์ด ๊ฑฐ์ฃ .์ด์ ๋จ์ ํ ์ผ์ ์ด ํ ์คํธ์ 'de'๊ฐ ํฌํจ๋์ด์๋์ง ํ์ ํ๋ ๊ฒ๋๋ค. ๊น๋ฆฌํ
include()
๋ฉ์๋๋ฅผ ์ฐ๋ฉด ๋จ๋ฐ์ ์ฐพ์๋ผ ์ ์์ด์!includes()๋ ๋ฐฐ์ด์ ํน์ ์์๊ฐ ํฌํจ๋์ด ์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ์ฌ true ๋๋ false๋ฅผ ๋ฐํํฉ๋๋ค. ์ด, ์๊น filter() ๋ฉ์๋๋ true์ธ ์์๋ง ๋ณด์์ ์ ๋ฐฐ์ด๋ก ๋ง๋ ๋ค๊ณ ํ๋๋ฐ!!! ๊ทธ๋ผ ์ด ๋์ ๊ฒฐํฉํ๋ฉด ๋๊ฒ ๊ตฌ๋!!!!!
const category = document.querySelector(".mw-category"); const categoryLinks = Array.from(category.querySelectorAll("a")); const categoryLinksText = categoryLinks.map(link=>link.textContent); const result = categoryLinksText.filter(text=>text.includes('de')); console.log(result);
๋ง๋ถ์ฌ, ์ ๊น๋ฆฌํ ๋นํฐ์ง ๋ฐฉ์ ๋ฉ์๋๋ก๋
indexOf()
๊ฐ ์์ต๋๋ค.
์ ์์ด๋ ๋ฐฐ์ด์์ ์ง์ ๋ ์์๋ฅผ ์ฐพ์ ์ ์๋ ์ฒซ๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๊ณ ์กด์ฌํ์ง ์์ผ๋ฉด -1์ ๋ฐํํฉ๋๋ค. ๊ทธ๋์ ์ด๋ ๊ฒ ์์ฉํด์ ์ธ ์ ์์ด์!const result = de.filter(text=>text.indexOf("de") !== -1);
7. sort()
sort() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์๋ ๋ฐฐ์ด์ ์ฌ์ ๋ ฌํ๊ณ ์ ํฉ๋๋ค. ์ด๋ฆ์ ๊ธฐ์ค์ผ๋ก ์ํ๋ฒณ์์ผ๋ก ๋์ดํด๋ณด์ฃ .
const people2 = ['Beck, Glenn', 'Becker, Carl', 'Beckett, Samuel', 'Beddoes, Mick', 'Beecher, Henry', 'Beethoven, Ludwig', 'Begin, Menachem', 'Belloc, Hilaire', 'Bellow, Saul', 'Benchley, Robert', 'Benenson, Peter', 'Ben-Gurion, David', 'Benjamin, Walter', 'Benn, Tony', 'Bennington, Chester', 'Benson, Leana', 'Bent, Silas', 'Bentsen, Lloyd', 'Berger, Ric', 'Bergman, Ingmar', 'Berio, Luciano', 'Berle, Milton', 'Berlin, Irving', 'Berne, Eric', 'Bernhard, Sandra', 'Berra, Yogi', 'Berry, Halle', 'Berry, Wendell', 'Bethea, Erin', 'Bevel, Ken', 'Biden, Joseph', 'Biko, Steve', 'Billings, Josh', 'Biondo, Frank', 'Birrell, Augustine', 'Black, Elk', 'Blair, Robert', 'Blair, Tony', 'Blake, William', 'Holmes, Sherlock', 'Watson, John', 'kim, Anne'];
์ด๋ฆ์ด '์ฑ, ์ด๋ฆ' ํํ๋ก ๋์ด์๊ธฐ ๋๋ฌธ์ ๋ฌธ์์ด์ ์๋ผ๋ผ ํ์๊ฐ ์์ต๋๋ค. ์ด๋ ์ฐ๋ ๊ฑด
split()
๋ฉ์๋์ฃ ! ์ด๊ฑด ์ธ์๋ก ๋ฐ์separator
๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด์ ์๋ผ ๋ฐฐ์ด๋ก ๋ง๋ญ๋๋ค.const alpha = people2.sort((lastOne, nextOne)=>{ const name = lastOne.split(', '); });
์ด๋ name์ ์ฝ์์ ์ฐ์ผ๋ฉด ["kim", "anne"]๊ณผ ๊ฐ์ด ์ถ๋ ฅ๋ฉ๋๋ค. ๊ทธ๋ผ index 1๋ฒ์งธ ์์๋ฅผ ๊ฐ์ ธ๋ค ์ฐ๋ฉด ๋๊ฒ ๋ค์!
const alpha = people2.sort((lastOne, nextOne)=>{ const aName = lastOne.split(', '); const bName = nextOne.split(', '); if (aName[1] > bName[1]) { return 1; } if (aName[1] < bName[1]) { return -1; } return 0; }); console.table(alpha);
๋๋ ์๋์ ๊ฐ์ด ์์ฑํด๋ ๋ฉ๋๋ค :D
const alpha2 = people2.sort((lastOne, nextOne)=>{ const [aLast, aName] = lastOne.split(', '); const [bLast, bName] = nextOne.split(', '); if (aName > bName) { return 1; } if (aName < bName) { return -1; } return 0; });
8. reduce()
๋๋์ด!! ๋ง์ง๋ง์ ๋๋ค. reduce()๋ฅผ ํ์ฉํด ์ธ์คํด์ค ๊ฐ์๋ฅผ ์ ์ ์์ต๋๋ค.
const data = ['car', 'car', 'truck', 'truck', 'bike', 'walk', 'car', 'van', 'bike', 'walk', 'car', 'van', 'car', 'truck', 'pogostick'];
const transportation = data.reduce((all, current)=>{ if (current in all){ all[current] ++; }else{ all[current] = 1; } return all; },{}); console.log(transportation);
in
operator๋ ํน์ ์์ฑ์ด ์์ผ๋ฉด true๋ฅผ ๋ฐํํด์ค๋๋ค. ๋, ์ ๋ณด๋ฉด ์ฝ๋ฐฑํจ์์ {}์ธ์๊ฐ ํ๋ ๋ค์ด๊ฐ ๊ฑธ ๋ณผ ์ ์๋๋ฐ, ์๋ง(?) ์ด๊ธฐ๊ฐ์ ์ค๋ธ์ ํธ ํํ๋ก ์ง์ ํ ๋ฏํฉ๋๋ค (์ ๋ถ๋ถ์ ์ฐจํ ๋ ๊ณต๋ถํ๊ณ ์ถ๊ฐํ๊ธฐ๋กโ) (*MDN)๋์!
See the Pen Array (Javascript) by NY KIM (@nykim_) on CodePen.
728x90'Blog > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS30] Dev Tools Tricks (0) 2019.02.17 [JS30] HTML Canvas (0) 2019.02.15 [JS30] Array ๋ฉ์๋(2) (0) 2019.02.11 [JS30] Ajax Type Ahead (Ajax ํ์ดํ) (1) 2019.02.06 [JS30] ์๋ฐ์คํฌ๋ฆฝํธ๋ก CSS ๋ณ์(์ฌ์ฉ์ ์ ์ ์์ฑ) ์กฐ์ ํ๊ธฐ (5) 2019.01.07 ๋๊ธ