๐Ÿ“– TIL - includes์™€ replaceAll๋กœ ์ง๊ด€์ ์œผ๋กœ ๊ตฌํ˜„ํ•œ "์ˆซ์ž ๋ฌธ์ž์—ด๊ณผ ์˜๋‹จ์–ด"

์Š˜ยท2024๋…„ 12์›” 26์ผ

๐Ÿ“– TIL

๋ชฉ๋ก ๋ณด๊ธฐ
11/90

๐Ÿ“Œ ๋ฌธ์ œ ์„ค๋ช…

์ˆซ์ž์˜ ์ผ๋ถ€ ์ž๋ฆฟ์ˆ˜๋ฅผ ์˜๋‹จ์–ด๋กœ ๋ฐ”๊พผ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์›๋ž˜ ์ˆซ์ž๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค
์ž…๋ ฅ ์˜ˆ์‹œ: "one4seveneight" โ†’ ์ถœ๋ ฅ: 1478


๐Ÿค” ๋ฌธ์ œ ์ ‘๊ทผ

์ฒ˜์Œ์— ์ƒ๊ฐํ•œ ์ฝ”๋“œ๋Š” const num = {'zero': 0, ...}๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์„œ hasOwnProperty()์œผ๋กœ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด ๋ณ€ํ™˜์„ ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผ์„ ํ•˜๋ ค๊ณ  ํ–ˆ์—ˆ๋‹ค. ๊ฐ’์ด ์žˆ๋‹ค๋ฉด split(key)๋ฅผ ํ•˜๊ณ  join(value)๋ฅผ ํ•˜๋ฉด ์–ด๋–จ๊นŒ..? ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์น˜๋ คํ•˜๋‹ค ๋ฌธ๋“!
์Œ.. string ๋ณ€ํ™˜์„ ํ•œ๋ฒˆ์— ๋ฐ”๊ฟ”์ฃผ๋Š”๊ฒƒ..
....์•„ ๋งž๋‹ค!

replaceAll() ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์—ˆ๊ตฌ๋‚˜!

๊ทธ๋Ÿฌ๊ณ ๋ณด๋‹ˆ 0,1,2..
์˜๋‹จ์–ด๋ฅผ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์ˆซ์ž๋กœ์˜ ๋ณ€ํ™˜์ด ์‰ฝ๊ฒ ๊ตฌ๋‚˜!
๊ทธ๋ฆฌํ•˜์—ฌ forEach๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ ์˜๋‹จ์–ด๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค


๐Ÿ’ก ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

function solution(s) {
    var answer = s;
    const num = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]   
    num.forEach((e,i) => answer = answer.includes(e) ? answer.replaceAll(e,i) : answer)
    return Number(answer);
}

๐Ÿ” ์ฝ”๋“œ ์„ค๋ช…

1. ์˜๋‹จ์–ด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์—ฌ ์ธ๋ฑ์Šค๊ฐ€ ์ˆซ์ž์™€ ๋งค์นญ๋˜๋„๋ก ์„ค์ •

ex) num[1] = "one", num[2] = "two"

2. forEach๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ ์˜๋‹จ์–ด์™€ ์ธ๋ฑ์Šค๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ:

  • includes()๋กœ ํ˜„์žฌ ์˜๋‹จ์–ด๊ฐ€ ๋ฌธ์ž์—ด์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ
  • ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋ฉด replaceAll()์„ ์‚ฌ์šฉํ•ด ํ•ด๋‹น ์˜๋‹จ์–ด๋ฅผ ์ธ๋ฑ์Šค(์ˆซ์ž)๋กœ ๋ณ€ํ™˜

3. ์ตœ์ข…์ ์œผ๋กœ Number()๋ฅผ ์‚ฌ์šฉํ•ด ์ˆซ์žํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜


โœจ ์ƒˆ๋กญ๊ฒŒ ๋ฐฐ์šด ์ 

String.prototype.includes()์™€ replaceAll()์„ ํ™œ์šฉํ•œ ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•
๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ๋งคํ•‘ ๊ธฐ๋ฒ•


๐Ÿš€ ์ด๋Ÿฐ ์ ์ด ํšจ์œจ์ ์ด์—์š”

๊ฐ์ฒด ๋Œ€์‹  ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•จ์œผ๋กœ์จ ์ฝ”๋“œ๊ฐ€ ๋” ๊ฐ„๊ฒฐํ•ด์ง
includes()๋กœ ํ™•์ธ ํ›„ ๋ณ€ํ™˜ํ•˜๋ฏ€๋กœ ๋ถˆํ•„์š”ํ•œ replaceAll ์—ฐ์‚ฐ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Œ
์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์กฐ๊ฑด๋ฌธ์„ ํ•œ ์ค„๋กœ ์ฒ˜๋ฆฌ


โญ๏ธ ์ฐธ๊ณ  ์ž๋ฃŒ

MDN - String.prototype.replaceAll()

profile
์ฃผ๋‹ˆ์–ด ํ”„๋ก ํŠธ์—”๋“œ ์„ฑ์žฅ๊ธฐ ๊ธฐ๋ก๊ธฐ๋ก

0๊ฐœ์˜ ๋Œ“๊ธ€