2021. 12. 3. 22:02ใ๐ TIL
[ ๋ฌธ์ ]
์๋์ ๊ฐ์ ๋ฐ์ดํฐ ๊ฐ์ฒด๊ฐ ์๋ค. status ํ๋กํผํฐ์๋ "๋๊ธฐ", "์งํ์ค", "์๋ฃ" 3๊ฐ์ง ๊ฐ์ด ๋ค์ด์ฌ ์ ์๊ณ , ์๊ตฌ์ฌํญ์ ๋ฐฐ์ด ๋ด๋ถ์ ๊ฐ์ฒด๋ฅผ "๋๊ธฐ - ์งํ์ค - ์๋ฃ" ์์ผ๋ก ์ ๋ ฌํ๋ ๊ฒ์ด๋ค.
const patients = [
{
"id": 1,
"name": "๊น๋์กด",
"reg_time": "14:30",
"doc_name": "๊น์์ฐ",
"status": "์๋ฃ",
},
{
"id": 2,
"name": "๋ฐ๋์กด",
"reg_time": "12:30",
"doc_name": "์ต์ง์",
"status": "๋๊ธฐ",
},
{
"id": 3,
"name": "๋๋์กด",
"reg_time": "11:30",
"doc_name": "์ด์์ฑ",
"status": "์งํ์ค",
},
...,
{
"id": 10,
"name": "์ต๋์กด",
"reg_time": "11:30",
"doc_name": "์์ฑํ",
"status": "์งํ์ค",
},
]
ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ ๋๋งํ๋ฉด ์๋์ฒ๋ผ ๋์จ๋ค. ๋ค์ฃฝ๋ฐ์ฃฝ์ด๋ค. ์ ๋ ฌ ํ๋ฌ ๊ฐ๋ณด์๊ณ
[ํด๊ฒฐ๊ณผ์ ]
sort()๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ ์์ง๋ง, ์ฝ๋๊ฐ ์ง๊ด์ ์ด์ง ์์๋ค. (์ฌ์ค sort() ๋ฉ์๋๋ก ํด๊ฒฐ๋ชปํ๋ค, ํด๊ฒฐ๋ ๋ชปํ๊ณ ์ง๊ด์ ์ด์ง๋ ์๊ณ )
์ฐ์ ์ ๋ ฌํ๊ณ ์ถ์ ์์๋๋ก(๋๊ธฐ -> ์งํ์ค -> ์๋ฃ) order ๋ฐฐ์ด์ ๋ง๋ค์๋ค.
const order = ["๋๊ธฐ", "์งํ์ค", "์๋ฃ"]
order ์ ์์๋ฅผ ์์๋๋ก iterate ํ๋ฉด์, ์ฐ๋ฆฌ๊ฐ ์ ๋ ฌํ๊ณ ์ ํ๋ patients ๋ฐฐ์ด์ filter ๋ฉ์๋๋ฅผ ์ ์ฉํ๋ค.
const patientOrder = order.map(base =>
patients.filter(data => data.status === base));
์ด๋ฐ์์ผ๋ก ์ธ๊ฐ์ ์๋ก ๋ค๋ฅธ ๊ฐ์ฒด๊ฐ patientOrder ๋ฐฐ์ด์ ๋ด๊ฒผ๋ค.
0๋ฒ์งธ ์ธ๋ฑ์ค๋ถํฐ 2๋ฒ์งธ ์ธ๋ฑ์ค๊น์ง, ์ฐ๋ฆฌ๊ฐ ์ํ๋ ์์์ธ ๋๊ธฐ -> ์งํ์ค -> ์๋ฃ ์์๋๋ก ๋ฐฐ์ด์ด ์ ์ ์ฅ๋ผ์๋ค.
ํ๋์ ๋ฐฐ์ด์ ์๋ก ๋ค๋ฅธ ์ธ๊ฐ์ ๋ฐฐ์ด์ด ๋ด๊ฒจ์๋ค. ํ์ง๋ง ์ฐ๋ฆฌ๊ฐ ์ํ๋ ํํ๋ ๊ทธ์ ํ๋์ ๋ฐฐ์ด์ ๊ฐ์ฒด๊ฐ ๋ด๊ฒจ์๋ ํํ์ด๋ค. (๊ทธ๋์ผ ๋ ๋๋ง์ด ๋๋๊น)
ํด๊ฒฐ๋ฒ์ ๊ฐ๋จํ๋ค. flat() ๋ฉ์๋๋ฅผ ์จ์ฃผ์.
const patientOrder = order.map(base =>
patients.filter(data => data.status === base)).flat();
[ ๊ฒฐ๊ณผ ]
๊น~๋ํ๊ฒ ์ ๋ ฌ ๋์๋ค. ๊ฐ๋จํ ์ฝ๋์ง๋ง ๊ธฐ๋กํ๊ณ ์ถ์ด์ ํฌ์คํฑํ๋ค.