๊ตญ๋น์ง์ D+41
- ์ด๋ฒคํธ์ ๋ฉ์์ง, sort์ ์๋ฆฌ -
์ด๋ฒคํธ์ ๋ฉ์์ง
• ์ด๋ฒคํธ
- ์ด๋ฒคํธ๋ ์ํ๊ฐ ๋ฐ๋๋ ์ฌ๊ฑด์ ์๋ฏธํ๋ค.
- ์น์ ์ด๋ฒคํธ ๋ฉ์ด๋ฆฌ์ธ๋ฐ ์ฐ๋ฆฌ๊ฐ ์ด๋ฒคํธ๊ฐ ๋ฐ์๋์๋ค๊ณ ์๊ฐ์ ์ธ์ํ์ง ๋ชปํ๋ ๊ฒ์ ๊ทธ๋งํผ ์ปดํจํฐ ์๋๊ฐ ๋น ๋ฅด๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
- ์ด๋ฒคํธ๋ ๋ฐ์ํ ๋๋ง๋ค ํด๋น๋๋ ๋ฉ์์ง๊ฐ ํ์ด ๋์จ๋ค.
ex) event : ๋ง์ฐ์ค๋ฅผ ์์ง์ธ๋ค → message : ๋ง์ฐ์ค๋ฅผ ์์ง์ด๋ ์์น์ ๋ํ ์ขํ๊ฐ
• ๋ฉ์์ง
- ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด์ ๋์ค๋ ๊ฐ์ ๋ฉ์์ง๋ผ๊ณ ํ๋๋ฐ ๋ฉ์์ง๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ์น์ด ๋์๊ฐ๋ค.
์๋ค๋ค์ด ์ค๋ช ํ์๋ฉด, ๋ง์ฝ A์ฌ์ดํธ์ ์๋ 3๋ฒ์งธ ๋ฒํผ์ ํด๋ฆญํ๊ณ ์ถ๋ค.
๊ทธ๋์ ๋ง์ฐ์ค๋ฅผ ํด๋ฆญํ๋ฉด ๋ง์ฐ์ค๋ฅผ ํด๋ฆญํ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๊ฒ ๋๊ณ ์ด๋ฒคํธ๊ฐ ๋ฐ์๋๋ ๋์์ ๋ง์ฐ์ค ์ขํ๊ฐ์ ๋ํ ๋ฉ์์ง๊ฐ ๋์จ๋ค.
์ด๋ ๋จ์ํ ํ๋ฉด์ ๋ํ ์ขํ๊ฐ์ด ๋์ค๋๊ฒ ์๋๋ผ ๋ด๊ฐ ํด๋ฆญํ๊ฒ ์ด๋์ฌ์ดํธ๊ณ ์ฌ์ดํธ์์ ์ด๋ค ๋ฒํผ์ธ์ง์ ๋ํ ์ ๋ณด๋ฅผ ์๋ ค์ค ๋ธ๋ผ์ฐ์ ๊ฐ ๋์๋๊ฒ ๋๋ค.
๋ง์ฐ์คํด๋ฆญ์ด๋ฒคํธ๋ฅผ ํตํด ์จ ๋ฉ์์ง๊ฐ ์ค๋ฉด ๊ฐ์ฅ์์ window๊ฐ์ฒด์์๋ถํฐ ์ฐจ๋ก์ฐจ๋ก๋ค์ด๊ฐ์ ๋ชฉํ์ง์ ๊น์ง ๋๋ฌํ๋ ์๋ฆฌ์ด๋ฉฐ, ์ด๋ฅผ ํตํด ๋ด๊ฐ ํด๋ฆญํ ๋ถ๋ถ๋ง ์ด๋ฒคํธ๊ฐ ๊ฑธ๋ฆฌ๋ ๊ฒ์ด ์๋๋ผ ๊ณ์ธต์ ์ผ๋ก ๋ฉ์์ง๊ฐ ๋ผ์ฐํ ๋๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
sort์ ์๋ฆฌ
• sort๋?
๋ฐ์ดํฐ๊ฐ ๊ธฐ์ค์ ๋ฐ๋ผ์ ์๊ธฐ์ ์์น๋ฅผ ์ฐพ๋ ์ ์ฐจ์ด๋ค.
=> ์์๋๋ก๋ง ์ ๋ ฌํ๋ ๊ฒ์ด ์ ๋ ฌ์ด ์๋๋ผ ์๊ธฐ ์์น๋ฅผ ์ฐพ์๊ฐ๋๊ฒ์ด ์ ๋ ฌ์ด ๋๋ ๊ฒ์ด๋ค.
• ์๋ฆฌ
sort๋ฅผ ์ฌ์ฉํ ๋ array.sort()๋ก๋ง ์ฌ์ฉํ๋ฉด ํด๋น ๋ฉ์๋๋ ์ ๋์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ๋ ฌํ๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ์ํ๋ ์ค๋ฆ์ฐจ์์ด๋ ๋ด๋ฆผ์ฐจ์์ ํํํ ์ ์๋ค.
array.sort(๋น๊ตํจ์);
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ์ ๋ ฌ์๋ ์ข ๋ฅ๊ฐ ๋ง์ง๋ง ๋ชจ๋ ์ ๋ ฌ์ ๊ธฐ์ค์ "๋น๊ต"์ด๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ sort ๋ฉ์๋ ์์ ๋ ๊ฐ์ ๊ธฐ์ค์ ๋ง๊ฒ ๋น๊ตํ๋ compareํจ์๋ฅผ ๋ฃ์ด์ ๊ฐ์ ๋น๊ตํ ์ ์๋ค.
function compare(a, b) {
if (a is less than b by some ordering criterion) {
return -1;
}
if (a is greater than b by the ordering criterion) {
return 1;
}
// a must be equal to b
return 0;
}
comapreํจ์๋ ํจ์์ ๋ฐํ ๊ฐ์ ๋ฐ๋ผ ๋ ๊ฐ์ด ์ ๋ ฌ๋๋ ๊ฒ์ผ๋ก ๋ ๊ฐ a์ b๋ฅผ ๋น๊ตํ์ ๋ ์กฐ๊ฑด์์ a๊ฐ b๋ณด๋ค ๋ฎ์ ์ธ๋ฑ์ค ๊ฐ์ ๊ฐ์ ธ์ผํ ๋ -1๋ฆฌํด์, ๋์ ์ธ๋ฑ์ค ๊ฐ์ ๊ฐ์ ธ์ผ ํ ๋์๋ 1์ ๋ฆฌํดํ๊ณ ๊ทธ ์ธ์๋ 0์ ๋ฆฌํดํ๋ ๋ฐฉ์์ผ๋ก compareํจ์๋ฅผ ํํํ ์ ์๋ค.
function compareNumbers(a, b) {
return a - b;
}
๋ํ ๋น๊ตํจ์๋ฅผ ์ถ์ฝํด์ ์์ ์ฝ๋๋ก๋ ํํํ ์ ์์ผ๋ฉฐ, ํด๋น ์ฝ๋๋ ์ค๋ฆ์ฐจ์์ ๋ ฌ์ ํํํ ๊ฒ์ด๋ค.
// ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํ๋ value 99์ธ ๋์ ์์ผ๋ก ๋ณด๋ด๊ธฐ
const data = [
{
id: 'abc1',
vlaue : 150
},
{
id: 'abc2',
vlaue : 99
},
{
id: 'abc3',
vlaue : 99
},
{
id: 'abc4',
vlaue : 500
},
{
id: 'abc5',
vlaue : 48
}
];
const compare = function(a, b)
{
if(a.vlaue === 99)
{
return -1;
}
else if (b.vlaue === 99)
{
return 1;
}
else
{
return b.vlaue - a.vlaue;
}
};
data.sort(compare);
console.log(data);
์ด๋ฐ์๋ ์ ๋ ฌ์ ๋จ์ํ ์ซ์์ ํฌ๊ธฐ์์ผ๋ก ๋์ดํ๋ ๊ฒ์ด ์๋๋ผ ํน์ ์กฐ๊ฑด์ ๋ง๋ค์ด ๊ฐ์ ๋์ดํ ์๋ ์๋ค.
'์๋ > ๊ตญ๋น์ง์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[D+43] JS ์์ธ์ฒ๋ฆฌ, ์์ฑ์, ๊ฐ์ฒด์ ์์ฑ ๋ฐฉ๋ฒ (0) | 2022.11.21 |
---|---|
[D+42] ๋ฌธ์๊ฐ์ฒด ์์ฑ, ์ด๋ฒคํธ ์ฒ๋ฆฌ (0) | 2022.11.18 |
[D+40] ๋ฌธ์-๊ฐ์ฒด ๋ชจ๋ธ DOM (0) | 2022.11.16 |
[D+39] ์ค์ฝํ, ํด๋ก์ , JSON (0) | 2022.11.16 |
[D+38] ํจ์ ๊ณ ๊ธ, ๊ฐ์ฒด (0) | 2022.11.15 |
๋๊ธ