๋ชฉ์ฐจ
์ด์ ๊ธ โผ
array state๋ฅผ ์ ๋ ฌํ๊ณ ์ถ์ ๋๋ ์ด๋ป๊ฒ ํด์ผํ ๊น?
๊ฐ์ฅ ๋ณดํธ์ ์ธ ๋ฐฉ๋ฒ์ธ sort()๋ฉ์๋๋ฅผ ์ด์ฉํด๋ณด์.
1. sort() ํ์ฉํ์ฌ array state ์ ๋ ฌํ๊ธฐ
let [music, setMusic] = useState(
[{"type": "Rock", "title": "Summer", "singer": "The Volunteers", "thumbs": 0},
{"type": "HipHop", "title": "๊ทธ ํด ์ฌ๋ฆ", "singer": "์ ํ ", "thumbs": 0},
{"type": "Dance", "title": "Hype Boy", "singer": "New Jeans", "thumbs": 0},
{"type": "Rock", "title": "Mercurial", "singer": "์ค๋ฆฌ์นด๊ฒ", "thumbs": 0},
{"type": "Dance", "title": "Spicy", "singer": "aespa", "thumbs": 0},
{"type": "HipHop", "title": "Circle", "singer": "Post Malone", "thumbs": 0},
])
๊ฒฐ๊ณผํ๋ฉด
์์ array state์ ์ ์๋ ์์๋๋ก ๋ฆฌ์คํธ๊ฐ ๋ ๋๋ง๋ ๋ชจ์ต์ด๋ค.
์ด๋ฅผ ABC ๋ฒํผ์ ํตํด ๋ ธ๋์ ๋ชฉ์ ์ด๋ฆ์์ผ๋ก ์ ๋ ฌํด๋ณด์!
1) sort()
arr.sort(๋น๊ตํจ์)
(1) ๋งค๊ฐ๋ณ์
sort() ๋ฉ์๋๋ ๋น๊ตํจ์๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ฐ๋๋ค.
์ด๋ฅผ ๋ฐํ์ผ๋ก array๋ด ์์๋ฅผ ์ ๋ ฌํ๊ณ ๋ฐํํ๋ค.
๋ง์ฝ ์๋ต์ด ๋๋ค๋ฉด, ๊ฐ ์์๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ ํ ์ ๋์ฝ๋ ํฌ์ธํธ ๊ฐ์ ๋ฐ๋ผ ์ ๋ ฌํ๋ค.
(2) ๋ฐํ๊ฐ
์ ๋ ฌ๋ array
์ด๋ ์ฃผ์ํ ์ ์ ๋ณต์ฌ๋ณธ์ ์์ฑํ๋ ๊ฒ์ด ์๋ ์๋ณธ์ ์ ๋ ฌํ๋ค.
(3) ๋น๊ตํจ์
arr.sort((a,b)=>{
if(a๊ฐ b๋ณด๋ค ๋จผ์ ์์ผํ๋ ๊ฒฝ์ฐ) return -1;
if(a๊ฐ b๋ณด๋ค ๋์ค์ ์์ผํ๋ ๊ฒฝ์ฐ) return 1;
return 0; //๋๋ฑํ ๋
})
๋ฐํ ๊ฐ์ ๋ฐ๋ผ ์ ๋ ฌ์ ์ง์ํ๋ค.
2) ํ์ฉํ๊ธฐ
<button onClick={()=>{
let copy = [...music];
copy = copy.sort((a,b)=>{
if (a.title > b.title) return 1;
if (a.title < b.title) return -1;
return 0;
});
setMusic(copy);
}}>
<span>ABC</span>
</button>
music state๋ฅผ ๊น์ ๋ณต์ฌํ ๋ค sort()๋ฉ์๋์ ํจ์๋ฅผ ์ ๋ฌํ์ฌ ์ ๋ ฌํ์๋ค.
์ ๋ชฉ์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ๊ฒ์ด๋ฏ๋ก
a.title์ด b.title ๋ณด๋ค ํฐ ๊ฒฝ์ฐ('z'๊ฐ 'a'๋ณด๋ค ์ ๋์ฝ๋ ํฌ์ธํธ๊ฐ ํผ) 1์ returnํ๊ณ
๋ฐ๋์ ๊ฒฝ์ฐ -1์ return ํ์ฌ ์ ๋ ฌํ๋ค.
๊ฒฐ๊ณผํ๋ฉด
'๐ | WEB DEV > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] 4. ๋์ ์ธ UI ์ ์ํ๊ธฐ (0) | 2023.05.28 |
---|---|
[React] 3. ์ปดํฌ๋ํธ (Component) (0) | 2023.05.28 |
[React] 2. state (๋ณ์, array, object) (0) | 2023.05.26 |
[React] 1. JSX (0) | 2023.05.07 |
[React] 0. React๋ฅผ ์ฌ์ฉํ๋ ์ด์ & ์ด๊ธฐ ์ธํ (0) | 2023.05.05 |
๋๊ธ