- Union-Find
- LCs
- ๋ฐฑ์ค
- ๋นํธ๋ง์คํน
- BFS
- ์ฌ๋ผ์ด๋ฉ ์๋์ฐ
- ์๊ณ ๋ฆฌ์ฆ
- Python
- js
- ์ํฐ๋
- DFS
- ์น๋ฆฐ์ด
- ์์ฝ๋
- ๊ฐ์ฅ๊ฐ๊น์ด๊ณตํต์กฐ์
- ์ฌ๊ท
- go
- golang
- ํ๋ฆฌ์จ๋ณด๋ฉ
- ์ด๋ถํ์
- nestjs
- ์นด์นด์ค ์ฝํ
- ๋ค์ต์คํธ๋ผ
- ๋นํธ๋งต
- ์นด์นด์ค2021
- ๋ฐฑ์๋ ํ๋ฆฌ์จ๋ณด๋ฉ
- ํธ๋ฆฌ
- C++
- DP
- ๋์ ํ๋ก๊ทธ๋๋ฐ
- ํ๋ก๊ทธ๋๋จธ์ค
- Today
- Total
Hello Ocean! ๐ผ
[VanillaJS] ๊ฐ์ฒด ์ ๋ ฌ ์ด๋ป๊ฒ ํ์ง? (feat. ๋ฌธ์์ด) ๋ณธ๋ฌธ
๋ฐฐ์ด์ ์ ๋ ฌํ ๋๋,
Array.sort() ํจ์๋ฅผ ํตํด์ ์ ๋ ฌ์ ํ ์ ์๋ค.
๊ฐ์ฒด๋ฅผ ์ ๋ ฌํ ๋๋ ์ด๋ป๊ฒ ํด์ผํ ๊น?
๊ฐ์ฒด๋ ๋ง์ฐฌ๊ฐ์ง๋ก sort()๋ฅผ ์ด์ฉํ๋๋ฐ, ๋ด๋ถ์ compareFunction์ ์ ์ํด์ฃผ์ด์ผ ํ๋ค.
์๋ฅผ๋ค์ด, ageํ๋๋ฅผ ๊ฐ์ง ์๋ ๊ฐ์ฒด ๋ฐฐ์ด์ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฌํ ์ ์๋ค.
let objs = [ {age: 13}, {age: 43}, {age: 9}, {age: 40} ];
objs.sort(function(a,b) { // ์ค๋ฆ์ฐจ์
return a.age - b.age;
});
objs.sort(function(a,b) { // ๋ด๋ฆผ์ฐจ์
return b.age - a.age;
});
C++๊ณผ ๊ฐ์ ๋ค๋ฅธ ์ธ์ด์์๋, compareFunction์ ์ ์ํ ๋, booleanํ์์ผ๋ก returnํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ, JS์์๋ int๋ก returnํด์ ์ ๊ธฐํ๋ค.
์๋๋ ๊ณต์ ๋ฌธ์์ ๊ด๋ จ ๋ด์ฉ์ด๋ค.
compareFunction์ด ์ ๊ณต๋๋ฉด ๋ฐฐ์ด ์์๋ compare ํจ์์ ๋ฐํ ๊ฐ์ ๋ฐ๋ผ ์ ๋ ฌ๋ฉ๋๋ค. a์ b๊ฐ ๋น๊ต๋๋ ๋ ์์๋ผ๋ฉด,
- compareFunction(a, b) < 0 : a๋ฅผ b๋ณด๋ค ๋ฎ์ ์์ธ์ผ๋ก ์ ๋ ฌํฉ๋๋ค. (a๊ฐ ๋จผ์ ์ด)
- compareFunction(a, b) == 0์ ๋ฐํํ๋ฉด a์ b๋ฅผ ์๋ก์ ๋ํด ๋ณ๊ฒฝํ์ง ์๊ณ ๋ชจ๋ ๋ค๋ฅธ ์์์ ๋ํด ์ ๋ ฌํฉ๋๋ค.
- compareFunction(a, b) > 0 : b๋ฅผ a๋ณด๋ค ๋ฎ์ ์ธ๋ฑ์ค๋ก ์ ๋ ฌํฉ๋๋ค. (b๊ฐ ๋จผ์ ์ด)
๊ทธ๋ฐ๋ฐ, ๊ฐ์ฒด๋ฅผ ์ ๋ ฌํ ๋ ๊ธฐ์ค์ด ๋๋ ํ๋๊ฐ string์ด๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น?
string์์๋ -์ฐ์ฐ์ ์ง์ํด์ฃผ์ง ์์๊น? ํด์ ์๋์ฒ๋ผ ์๋ํ๋๋ฐ, compareFunction์ return๊ฐ์ด NaN(Non a Number)๋ก ๋์ค๋ฉด์ ์ ๋ ฌ์ด ๋์ง ์์๋ค.
let objs = [ {age: "13"}, {age: "43"}, {age: "9"}, {age: "40"} ];
objs.sort(function(a,b) { // ์ ๋ ฌ x
return a.age - b.age;
});
๊ฒ์ ๊ฒฐ๊ณผ, string์์ ํฌ๊ธฐ๋น๊ต ์ฐ์ฐ์ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์, ์๋์ ๊ฐ์ด ์ฝ๋ฉํ๋ฉด ๋๋ค. ๊ฐ์ด ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ 0์ returnํ๋ ๊ฒ์ผ๋ก ๋ฐ๋ก ๋นผ์ค๋ ๋๊ณ , ์ ํด์ค๋ ์๊ด ์๋ค.
let objs = [ {age: "13"}, {age: "43"}, {age: "9"}, {age: "40"} ];
objs.sort(function(a,b) { // ์ค๋ฆ์ฐจ์
if (a.age > b.age) return 1;
else if (a.age < b.age) return -1;
else return 0;
});
objs.sort(function(a,b) { // ์ค๋ฆ์ฐจ์
if (a.age > b.age) return 1;
else (a.age < b.age) return -1;
});
์ฐธ๊ณ ๋ก, string ๋ฐฐ์ด ์ ๋ ฌ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
let arr = [ "12", "13", "20" ];
arr.sort() // ์ค๋ฆ์ฐจ์
arr.reverse() // ๋ด๋ฆผ์ฐจ์
'Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[VanillaJS] map๊ณผ forEach (0) | 2021.10.01 |
---|---|
[Postman] request์ cookie undefined error ํด๊ฒฐ (0) | 2021.08.27 |
[nodejs-react]Server-Client ํต์ ์ ๋ฌดํ ํธ์ถ ํด๊ฒฐ (0) | 2021.03.01 |
[Node.js] ์๋ฒ ์์ฑ (0) | 2021.01.26 |
[JavaScript] ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ (0) | 2020.12.28 |