[FE - ConnecTo] DAY47 TILπŸ‘©πŸ»β€πŸ’»

JUNYΒ·2022λ…„ 9μ›” 16일
0

πŸ“šZeroBase ConnecTo Front-End

λͺ©λ‘ 보기
35/53
post-thumbnail

22.09.16 μˆ˜μ—… μ‹œκ°„ 쀑 κ³΅λΆ€ν•œ λ‚΄μš©λ“€μ„ μ •λ¦¬ν•˜μ˜€μŠ΅λ‹ˆλ‹€ 😊
ν”Όλ“œλ°±μ€ μ–Έμ œλ‚˜ ν™˜μ˜μž…λ‹ˆλ‹€! 🍊

μ •κ·œν‘œν˜„μ‹ test.. μ™œ λͺ¨λ“  값을 찾지 λͺ»ν•˜λŠ” κ±°μ•Ό..?????

μ •κ·œμ‹.test(str) 문제점

였늘 Pair Programming λ•Œ, 전체 λͺ©λ‘μ—μ„œ μΌμΉ˜ν•˜λŠ” λ¬Έμžμ—΄μ΄ 있으면 κ·Έ λͺ©λ‘μ„ λ°˜ν™˜ν•˜λŠ” κΈ°λŠ₯을 κ΅¬ν˜„ν•˜λŠ” 과제λ₯Ό ν•΄κ²°ν•˜κ³  μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

해결을 ν•˜λ‹€κ°€, λ¬Έμ œμ μ„ λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€.

μ •κ·œν‘œν˜„μ‹μ—μ„œ matchλ₯Ό μ‚¬μš©ν–ˆμ„ λ•ŒλŠ” ν•΄λ‹Ήν•˜λŠ” λͺ¨λ“  λͺ©λ‘μ΄ λ°˜ν™˜λ˜λŠ”λ°, testλ₯Ό μ‚¬μš©ν–ˆμ„ λ•ŒλŠ” ν•΄λ‹Ήν•˜λŠ” λͺ¨λ“  λͺ©λ‘μ΄ λ°˜ν™˜λ˜μ§€ μ•ŠλŠ”λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

예λ₯Ό λ“€μžλ©΄ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

const regex = /such/ig;

const testValue1 = 'You are such a great student!'
const testValue2 = 'It was such a nice restaurant'

console.log(regex.test(testValue1)); // true
console.log(regex.test(testValue2)); // false

λΆ„λͺ… μ €λŠ” suchλ₯Ό κ²€μƒ‰ν–ˆκΈ° λ•Œλ¬Έμ—, testValue1κ³Ό testValue2 λͺ¨λ‘ true 값이 λ‚˜μ™€μ•Ό ν•˜λŠ”λ°, μ•„λž˜ testValue2λŠ” false 값이 λ‚˜μ˜€λŠ” λ¬Έμ œμž…λ‹ˆλ‹€.

이게 μ™œ 이럴까.. 고민을 많이 ν•˜λ‹€, μš°μ„  과제 해결을 μœ„ν•΄ 저희 μ‘°λŠ” matchλ₯Ό μ‚¬μš©ν•˜μ—¬ 문제λ₯Ό ν•΄κ²°ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

πŸ€” 그런데 이 μ΄μœ κ°€ λ„ˆλ¬΄λ‚˜λ„ κΆκΈˆν•œ κ²ƒμž…λ‹ˆλ‹€..!

이것은 λ°”λ‘œ, 이게 μ •κ·œ ν‘œν˜„μ‹μ—μ„œ ν•΄λ‹Ήν•˜λŠ” λͺ¨λ“  값을 μ°ΎκΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” β€˜g’ flag의 lastIndex 문제 λ•Œλ¬Έμ΄μ—ˆμŠ΅λ‹ˆλ‹€.

λͺ¨λ“  값을 μ°ΎκΈ° μœ„ν•΄μ„œλŠ” μ •κ·œ ν‘œν˜„μ‹μ—μ„œ 기본적으둜 ν˜„μž¬κΉŒμ§€ 찾은 indexλ₯Ό λ‚΄λΆ€μ μœΌλ‘œ 가지고 μžˆλŠ”λ°, 그게 λ°”λ‘œΒ lastIndex μ†μ„±μž…λ‹ˆλ‹€.

이 속성 λ•Œλ¬Έμ—, μœ„ μ‹μ—μ„œ console.log둜 lastIndex 속성을 μž…λ ₯ν•˜λ©΄ μ°¨λ‘€λ‘œ λ‹€μŒκ³Ό 같이 λ‚˜μ˜€κ²Œ λ©λ‹ˆλ‹€.

const regex = /such/ig;

const testValue1 = 'You are such a great student!'
const testValue2 = 'It was such a nice restaurant'

console.log(regex.test(testValue1)); // true
console.log(regex.lastIndex); // 12

console.log(regex.test(testValue2)); // false
console.log(regex.lastIndex); // 0

처음 12λŠ” testValue1μ—μ„œ such의 λ§ˆμ§€λ§‰ Index 값을 λ°˜ν™˜ν•˜κ²Œ λ©λ‹ˆλ‹€.

κ·Έ ν›„ 두 번째 κ²€μƒ‰μ‹œμ—λŠ”, lastIndex 값이 12κ°€ 된 μƒνƒœμ—μ„œ μ‹œμž‘ν•˜κΈ° λ•Œλ¬Έμ—, 12번 μ§Έ 자릿수 λ’€λΆ€ν„° κ²€μƒ‰ν•˜κ²Œ λ˜λ‹ˆ, return 값이 falseκ°€ λ„μΆœλ˜κ²Œ λ˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

이게 κ²€μƒ‰λ˜λŠ” μˆœμ„œκ°€ 이후에 λ‚˜μ˜¨λ‹€λ©΄, true 값이 λ‚˜μ™€μ„œ 문제 없이 μ‚¬μš©ν•  수 μžˆμ—ˆκ² μ§€λ§Œ, μ €ν¬λŠ” μ½”λ“œμ˜ 였λ₯˜λ₯Ό 보지 λͺ»ν•˜κ³  계속 μ‚¬μš©ν•˜κ²Œ λ˜λ―€λ‘œ, λ‚˜μ€‘μ— 더 큰 문제λ₯Ό λ°œκ²¬ν•  μˆ˜λ„ μžˆλŠ” 상황이 λ‹€κ°€μ˜¬ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

저희도 lastIndexλ₯Ό κ³ λ €ν•˜μ§€ μ•Šκ³ , μ½”λ“œλ₯Ό 짰기에, μ •κ·œμ‹μ„ λ³€μˆ˜μ— 담아두고 κ·Έκ±Έ μž¬ν™œμš©ν•΄μ„œ μ‚¬μš©ν–ˆμ§€λ§Œ,

이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œλŠ”, lastIndex 값을 κ·Έ λ•Œ κ·Έ λ•Œ 0으둜 κ°±μ‹ ν•΄μ€˜μ„œ λͺ¨λ“  값을 찾을 수 μžˆλ„λ‘ ν•˜λ©΄ λ˜κ² μŠ΅λ‹ˆλ‹€.

profile
μ„±μž₯ν•˜λŠ” 개발자🌼

0개의 λŒ“κΈ€