2021. 8. 23. 23:37ใ๐ TIL
์ด๊ฑธ ๋ฆฌํฉํ ๋ง์ด๋ผ ๋ถ๋ฅด๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง (์คํ๋ ค ํด๋ฆฐ์ฝ๋์ ๊ฐ๊น๋?),
๋ฐฑ์๋ ๋ก์ง ์ฒ๋ฆฌ ์ฝ๋๋ฅผ ๋๋์ผ๋ก ์ค์๋ค.
โ๏ธ Old way
์ฌ๊ธฐ์ ์ฝ๋๊ฐ ๊ธธ์ด์ง ์ด์ ๋, MBTI ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฆฌํดํ๊ธฐ ์ํด "E, I", "N, S", "F, T", "P, J" ์์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ฌ๊ธฐ์๋ ์ ๋ ฌ ๋์ , resultObj ๋ผ๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด, MBTI ์์๋ฅผ ํ๋์ฝ๋ฉ ํ๋ ํ์์ผ๋ก ๊ตฌํํ๋ค.
// old way
saveAnswers(resultArray) {
let mbti = {}
resultArray.forEach(result => {
mbti[result] = (mbti[result] || 0) + 1
})
const resultObj = {
"IE": '',
"SN" : '',
"TF" : '',
"JP" : ''
}
const switchResult = (key) => {
switch (true) {
case ["I", "E"].includes(key):
resultObj.IE = key
break
case ["S", "N"].includes(key):
resultObj.SN = key
break
case ["T", "F"].includes(key):
resultObj.TF = key
break
case ["J", "P"].includes(key):
resultObj.JP = key
break
}
}
for (let key in mbti) {
if (mbti[key] > 1) {
switchResult(key)
}
}
}
โ New way
๊ฐ์ ๋ ์ฝ๋์์๋, MBTI ์ ํ๋ณ ์์๋๋ก ์ ๋ ฌ๋ ๋ฐฐ์ด์ ๋ฏธ๋ฆฌ ํ๋์ฝ๋ฉ ํด๋๋ค. ์ ๋ฐฉ๋ฒ์ ๊ฐ์ฒดํ์ ๋์ ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์ด ๊ณผ์ ์์ javascript ์ set() ์๋ฃํ์ ์ฌ์ฉํ๋ค. ํ์ ์์ฐ๋ ์๋ฃํ์ด์ง๋ง ํจ๊ณผ๋ ๊ฐ๋ ฅํ๊ณ , ๋๋ถ์ ์ฝ๋์ ์์ ํ ์ค์ผ ์ ์์๋ค.
// new way
saveAnswers(resultArray) {
const MBTI = ["E", "I", "N", "S", "F", "T", "P", "J"]
const countElements = (array, x) => array.filter(arr => x === arr).length
const data = new Set(resultArray.filter(result => countElements(resultArray, result) > 1))
let finalResult = ''
MBTI.forEach(type => {
if (data.has(type)) {
finalResult += type
}
})
}
์ฒ์ old way ๋ฐฉ์์ผ๋ก ์ฝ๋๋ฅผ ์ง ํ, ์ฝ๋๊ฐ ๊ธฐ๋ฅ์ ๋นํด ๊ธธ๋ค๋ ๋๋์ด ๊ณ์ ๋ค์๋ค. ์์ฆ switch(true) ๋ฐฉ์์ ๊ฝํ ์๊พธ ์ฌ์ฉํ๋ ค๋ค ๋ณด๋ ์ด๋ ๊ฒ ๋ ๊ฒ ๊ฐ๋ค. ์ฝ๋๋ฅผ ์ค์ผ ๊ถ๋ฆฌ๋ฅผ ํ๋ฉด์ set() ์ ๋์ ํ์๊ณ , mbti ์์๋ฅผ ์ธํ ํ๊ธฐ ์ํด ๋ฏธ๋ฆฌ ํ๋์ฝ๋ฉ์ผ๋ก MBTI ๋ฐฐ์ด์ ๋ง๋ค์ด ์ฝ๋์์ ์ค์ผ ์ ์์๋ค.