[ TIL ] [ ์ •๊ทœ๊ณผ์ • : ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ1 ] ์ˆซ์ž์•ผ๊ตฌ ํ”„๋กœ๊ทธ๋žจ ๋งŒ๋“ค๊ธฐ

2023. 8. 17. 11:46ใ†0. TiL ( Today I Learned )

ํŒ€ ํŽ˜์–ด (4์ธ 2์กฐ) : ์ˆซ์ž์•ผ๊ตฌ ํ”„๋กœ๊ทธ๋žจ ๋งŒ๋“ค๊ธฐ

 

์•„๋ž˜์™€ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ํŒ€ ๊ณผ์ œ๋ฅผ ๋ฐ›์•˜๋‹ค. '๊ฐ„๋‹จํ•œ'์ด๋ผ๊ณ  ํ–ˆ์ง€๋งŒ, ์™œ ๊ฐ„๋‹จํ•˜์ง€ ์•Š์ง€..?

์ฝ”๋“œ๋Š” ๊ฑฐ์˜ ๋‹ค ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ๊ตฌํ˜„ํ•˜๋Š” ์ค‘๊ฐ„์ค‘๊ฐ„ ๋ฌธ์ œ๊ฐ€ ์กฐ๊ธˆ ์žˆ์–ด์„œ ๋งˆ๋ฌด๋ฆฌ ๋‹จ๊ณ„๋‹ค.

 

๊ฐ„๋‹จํ•œ ์ˆซ์ž์•ผ๊ตฌ ํ”„๋กœ๊ทธ๋žจ์„ JS๋กœ ๋งŒ๋“ค์–ด๋ด…๋‹ˆ๋‹ค.

์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ์„ ํ™œ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

 

 

์˜ค๋Š˜ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๋ฉด์„œ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋œ ๋ช‡ ๊ฐ€์ง€ ๊ฒƒ๋“ค์„ TIL์— ์ ์–ด๋†“์œผ๋ ค๊ณ  ํ•œ๋‹ค.

 

 


 

 

 

indexOf() ๋ฉ”์„œ๋“œ 

indexOf() ์ธ์Šคํ„ด์Šค์˜ ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด Array์—์„œ ์ฃผ์–ด์ง„ ์š”์†Œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜, ์—†์œผ๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf

 

Array.prototype.indexOf() - JavaScript | MDN

The indexOf() method of Array instances returns the first index at which a given element can be found in the array, or -1 if it is not present.

developer.mozilla.org

* ๋‚˜๋Š” ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ indexOf ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ๋ฐฐ์—ด์˜ ์–ด๋–ค ์ธ๋ฑ์Šค์— ์žˆ๋Š”์ง€ ํ•ด๋‹น๊ฐ’์„ ํ™•์ธํ•˜๊ณ  ๊ทธ ๊ฐ’์ด ์•„๋‹ˆ๋ฉด, -1 , ๋งž์œผ๋ฉด ๊ฐ’์„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ์‹์œผ๋กœ ์‚ฌ์šฉํ–ˆ๋‹ค. 

 


๋ฐฐ์—ด์„ ๋ฌด์ž‘์œ„๋กœ ์„ž๋Š” ์ฝ”๋“œ

numbers.sort(() => Math.random(-0.5))

sort() ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์˜ ์›์†Œ๋“ค์„ ์ •๋ ฌํ•˜๋Š” ๊ธฐ๋Šฅ์ž„์œผ๋กœ numbers.sort()๋ผ๊ณ  ํ•˜๋ฉด, numbers ๋ฐฐ์—ด์€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ๋‹ค.

() => Math.random(-0.5)๋Š” ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์ด๋ฉฐ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๊ณ , Math.random(-0.5)๋ผ๋Š” ํ‘œํ˜„์‹์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  Math.random(-0.5)๋Š” Math ๊ฐ์ฒด์˜ random() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ํ‘œํ˜„ํ•˜๋Š” ์‹์ด๋‹ค.

random() ๋ฉ”์„œ๋“œ๋Š” 0 ์ด์ƒ 1 ๋ฏธ๋งŒ์˜ ์ž„์˜์˜ ์‹ค์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.sort() ๋ฉ”์„œ๋“œ์— ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ฅผ ์ธ์ž๋กœ ๋„˜๊ธฐ๋ฉด, 

๋ฐฐ์—ด์˜ ์›์†Œ๋“ค์„ ๋น„๊ตํ•˜๋Š” ๊ธฐ์ค€์ด ๋ฉ๋‹ˆ๋‹ค. ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์ด ์ž‘์œผ๋ฉด ์•ž์œผ๋กœ, ํฌ๋ฉด ๋’ค๋กœ ์ •๋ ฌ์ด ๋œ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ’์€ ์ž„์˜์˜ ์‹ค์ˆ˜์ด๋ฏ€๋กœ, ๋ฐฐ์—ด์˜ ์›์†Œ๋“ค์€ ๋ฌด์ž‘์œ„๋กœ ์„ž์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ numbers.sort(() => Math.random(-0.5)) ๋Š” numbers ๋ฐฐ์—ด์„ ๋ฌด์ž‘์œ„๋กœ ์„ž๋Š” ์ฝ”๋“œ๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.

 * ๊ตฌ๊ธ€๋ง์œผ๋กœ ํ™•์ธํ•ด์„œ ์–ป์€ ์ฝ”๋“œ์ด๋‚˜, ์ผ๋ถ€์—์„œ๋Š” ์ด ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ๋ฅผ ๊ถŒ์žฅํ–ˆ๋‹ค. ๊ธธ์–ด์ง€๋”๋ผ๋„ ์‹์„ ์„ธ์›Œ์„œ ์‚ฌ์šฉํ•ด ๋ณด๋„๋ก ํ•ด์•ผ๊ฒ ๋‹ค.


Readline 

js readline์€ JavaScript์—์„œ ๋ช…๋ น์ค„ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ, ๋Œ€ํ™”ํ˜• ํŠœํ† ๋ฆฌ์–ผ ๋˜๋Š” CLI ๋„๊ตฌ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋„๊ตฌ. readline ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ช…๋ น์ค„์—์„œ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ์ฝ๊ณ  ์ ์ ˆํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

* Readline ์‚ฌ์šฉ๋ฒ•์„ ์ž˜ ๋ชฐ๋ผ์„œ ์กฐ๊ธˆ ํ—ค๋งธ๋‹ค.. ์ฒ˜์Œ์—” Readline์œผ๋กœ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด๋‹ค๊ฐ€ ์ œ๋ฒ• ๋ณต์žกํ•œ ๊ฒƒ ๊ฐ™์•„์„œ, prompt ํ•จ์ˆ˜๋ฅผ ์“ฐ๋ฉด ๋ฐ”๋กœ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ–ˆ๋‹ค. ์‚ฌ์šฉ๋ฒ•์„ ํ•œ๋ฒˆ ์ตํ˜€๋ณด๊ณ ์ž.. ๊ทธ๋ž˜๋„ ํ•œ๋ฒˆ ์จ๋ดค๋‹ค! 

 

์ฐธ์กฐ ๋ธ”๋กœ๊ทธ :  Node.js Readline() ๋ชจ๋“ˆ - GeeksforGeeks

์ฐธ๊ณ ๋ ๋งŒํ•œ YOUTUBE URL : https://youtu.be/dKYNLjtTtXw

 


Readline ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ

 

1. require ํ•จ์ˆ˜๋กœ readline์„ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ.

const readline = require("readline");

2. readline.createlnterface() ๋ฉ”์„œ๋“œ๋กœ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ( input / ouput ๋‘ ๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›๋Š”๋‹ค.)

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

* ์‚ฌ์šฉ์„ ํ•˜๋ฉด์„œ READLINE์— ๋ฉ”์„œ๋“œ๊ฐ€ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ๋‚˜๋ˆ„์–ด์ง„๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜๋‹ค. 

๋‚ด๊ฐ€ ํ™•์ธํ•œ ๊ฒƒ์€ ์‚ฌ์šฉํ•œ ๊ฒƒ์€ question ๋ฉ”์„œ๋“œ์˜€๋Š”๋ฐ, on์ด๋ผ๋Š” ๋ฉ”์„œ๋“œ๋„ ์žˆ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‘ ๊ฐœ๋ฅผ ๋น„๊ตํ•ด ๋ณด์•˜๋‹ค. 

 

question ๋ฉ”์„œ๋“œ : ์‚ฌ์šฉ์ž์˜ ์ง์ ‘์ ์ธ ์ž…๋ ฅ์„ ์š”์ฒญ

๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ์ฒด๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์งˆ๋ฌธ์„ ์ถœ๋ ฅํ•˜๊ณ , ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ๋ฐ›์•„์„œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์— ์ „๋‹ฌํ•˜๋Š” ๋ฉ”์„œ๋“œ.

์˜ˆ๋ฅผ ๋“ค์–ด, question(“What is your name?”, callback)์€ "What is your name?"์ด๋ผ๋Š” ์งˆ๋ฌธ์„ ์ถœ๋ ฅ

์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์ด๋ฆ„์„ callback ํ•จ์ˆ˜์— ์ „๋‹ฌํ•œ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์งˆ๋ฌธ๋งŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

const readline = require("readline");

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.question(" ์ˆซ์ž๋ฅผ ๊ณจ๋ผ์ฃผ์„ธ์š” ", (answer) => {
  // 1, 2, 3, 4, 5
  console.log(` ๋‹น์‹ ์ด ๊ณ ๋ฅธ ์ˆซ์ž :  ${1, 2, 3, 4, 5}`);
  rl.close();
});

 

on ๋ฉ”์„œ๋“œ :  on ๋ฉ”์„œ๋“œ๋Š” ์ŠคํŠธ๋ฆผ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ด๋ฒคํŠธ์— ๋Œ€์‘

์ธํ„ฐํŽ˜์ด์Šค ๊ฐ์ฒด๊ฐ€ ํŠน์ • ์ด๋ฒคํŠธ์— ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋“ฑ๋กํ•˜์—ฌ ํ˜ธ์ถœํ•˜๋Š” ๋ฉ”์„œ๋“œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, on(“line”, callback)์€ ์ŠคํŠธ๋ฆผ์—์„œ ํ•œ ์ค„์„ ์ฝ์„ ๋•Œ๋งˆ๋‹ค callback ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

rl.on("line", function(line) {
  // ๋ฌธ์ž์—ด
  // ์ฝ”๋“œ์ž‘์„ฑ
});

 


์ด๋ฒˆ์ฃผ.. ๋ฐ˜์ด๋‚˜ ์™”๋‹ค..

๊ฒฌ๋ŽŒ.. ์ด๊ฒจ๋‚ด..! 

ํ•  ์ˆ˜์ด ์จ...