๐Ÿšค ์„ฑ์žฅ์ผ์ง€ 6.0

์ฑ… ํ–‰๋ณตํ•œ ์ด๊ธฐ์ฃผ์˜์ž(์›จ์ธ ๋‹ค์ด์–ด)์˜ ๋‚ด์šฉ์— ์ž๊ทน๋ฐ›์•„ ์‹œ์ž‘ํ•˜๋Š” ์†Œ๋ฐ•ํ•œ ์„ฑ์žฅ๊ธฐ๋ก

์‚ด์•„์žˆ๋Š” ๊ฝƒ๊ณผ ์ฃฝ์€ ๊ฝƒ์€ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ณ„ํ•˜๋Š”๊ฐ€?
์„ฑ์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์‚ด์•„ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
์ƒ๋ช…์˜ ์œ ์ผํ•œ ์ฆ๊ฑฐ๋Š” ์„ฑ์žฅ์ด๋‹ค!

๐ŸŒพ (4.0)ํ•™์Šต ํ‚ค์›Œ๋“œ์—์„œ ์ตœ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์ •๋ณด ์ œ๊ณต, ๊ณ ๋ฏผ์—์„œ ๋‚ด ๊ฒฝํ—˜์„ ์ž์„ธํžˆ ์ ์ž!
๐ŸฅŠ (5.0)ํ•™์Šต ํ‚ค์›Œ๋“œ๋Š” ํ•œ์ค„์˜ ํ•ต์‹ฌ์œผ๋กœ๋งŒ ์ •๋ฆฌ, ์„ฑ๊ณต/์‹คํŒจ ์ผ์ง€ ์ž‘์„ฑํ•˜๊ธฐ! ์ด ๋•Œ, ์‹คํŒจ์˜ ๊ฒฝํ—˜์€ ์ž์„ธํžˆ ์ ๊ธฐ!
๐Ÿ‰ (6.0)<์™„์ „ ๊ฐœํŽธ!!!> ๋งค์ผ ์Šต๊ด€์ ์œผ๋กœ ํ•ต์‹ฌ๋งŒ ์ ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ”„๋ ˆ์ž„ ๋ณ€๊ฒฝ. ์„ฑ๊ณต๋ณด๋‹จ ์‹คํŒจ์— ์ดˆ์ ์„ ๋งž์ถ”๊ธฐ.

  • ๐Ÿ‰ (6.1)<์ˆ˜์ •> ๋งค๋ฒˆ ์„ฑ๊ณต, ์‹คํŒจ๋ฅผ ๋”ฐ๋กœ ์ ๋Š” ๊ฒƒ๋ณด๋‹จ ๊ฒฝํ—˜์œผ๋กœ ํ‘œํ˜„ํ•˜์ž!
  • ๐Ÿ‰ (6.2)<์ˆ˜์ •> ์ผ์ง€ ์นดํ…Œ๊ณ ๋ฆฌ ์ˆ˜์ • ๋ณ€๊ฒฝ!(๊ฒฝํ—˜ -> ๊ณ ๋ฏผ -> ํšŒ๊ณ  -> ๊ตํ›ˆ)

โ˜€๏ธ ์˜ค๋Š˜์˜ ๊ฒฝํ—˜

์š”๊ตฌ ์‚ฌํ•ญ์„ ์ž˜ ๋ณด๊ณ  ์˜ค๋ฒ„์ฝ”๋”ฉํ•˜์ง€ ๋ง์ž

์˜ค๋Š˜๋„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค. ๋ฌธ์ œ ์ž์ฒด๋Š” number[]์™€ number๊ฐ€ ์ฃผ์–ด์ง€๊ณ  number[]์—์„œ ์ฃผ์–ด์ง„ number์™€ ๊ฐ™์€ ์ˆซ์ž๋“ค์„ ์ œ์™ธํ•˜๋Š” ๋ฌธ์ œ์˜€๋‹ค. ์‚ฌ์‹ค ํ‰์†Œ์— ์ต์ˆ™ํ•œ ๊ณ ์ฐจํ•จ์ˆ˜(filter)๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ถˆ๋ณ€์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ํ•˜๋ฉด ์–ด๋ ต์ง€ ์•Š๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ ๋ฌธ์ œ๋Š” ๊ธฐ์กด์— ์ฃผ์–ด์ง„ ๋ณ€์ˆ˜ number[] ์ž์ฒด์˜ ๊ฐ’์„ ๋ณ€ํ™”์‹œ์ผœ์„œ filteringํ•˜๋ผ๋Š” ๋ฌธ์ œ์˜€๋‹ค. ์•„๋ž˜๋Š” ๋‚ด๊ฐ€ ํ‘ผ ์ฝ”๋“œ์ด๋‹ค.

/**
 * @param {number[]} nums
 * @param {number} val
 * @return {number}
 */
var removeElement = function(nums, val) {
    let index;
    while (index !== -1) {
        index = nums.findIndex(v => v === val);
        if (index < 0) break;
        nums.splice(index, 1);
        index = nums.findIndex(v => v === val);
    }
};

์กฐ๊ธˆ ์ง€์ €๋ถ„ํ•˜๊ธด ํ•˜์ง€๋งŒ findIndex์™€ splice๋ฅผ ํ†ตํ•ด number[]์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ filteringํ•  ์ˆ˜ ์žˆ๋‹ค.

์•„๋ž˜๋Š” ๋‹ค ํ’€๊ณ ๋‚˜์„œ ๋ณธ ๋‹ค๋ฅธ ๋ถ„์˜ solution์ด๋‹ค.

/**
 * @param {number[]} nums
 * @param {number} val
 * @return {number}
 */
var removeElement = function(nums, val) {
    var j = 0;
    for(var i=0;i<nums.length;i++)
    {
        if(nums[i]!=val)
        {
            nums[j++] = nums[i];
        }
    }
    return j;
};

์œ„์˜ ์ฝ”๋“œ๋ฅผ ์ญ‰ ๋”ฐ๋ผ์„œ ๋ณด๋ฉด nums๊ฐ€ ๋‚ด ์ฝ”๋“œ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ [2, 2]์™€ ๊ฐ™์€ ์‹์œผ๋กœ ๊น”๋”ํ•˜๊ฒŒ ๋–จ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ž˜์„œ ์ฒ˜์Œ์—” ์ž˜๋ชป๋œ ์ฝ”๋“œ์ธ ์ค„ ์•Œ์•˜๋Š”๋ฐ, ๋ฌธ์ œ์˜ ์š”๊ตฌ์กฐ๊ฑด์„ ๋ณด๋‹ˆ number[]์˜ 0๋ฒˆ์งธ index๋ถ€ํ„ฐ filtering๋œ ๊ฐ’๋“ค์ด ์ฑ„์›Œ์ง€๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค๊ณ  ์ ํ˜€์žˆ์—ˆ๋‹ค.

์ฆ‰, ๋‚˜๋Š” ๊ฒฐ๊ณผ๋ฅผ [2, 2]๊ฐ™์€ ํ˜•ํƒœ๋ฅผ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์‹ค์ œ๋กœ๋Š” [2, 2, _, _]์ด ๋˜์–ด๋„ ๊ดœ์ฐฎ์€ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ ํ‘ผ ์ฝ”๋“œ๋Š” ๋ฌธ์ œ์˜ ์š”๊ตฌ์กฐ๊ฑด์„ ์ž˜๋ชป ์ดํ•ดํ•ด์„œ ์˜ค๋ฒ„์ฝ”๋”ฉ์„ ํ•œ ๊ฒƒ์ด๋‹ค. ์•ž์œผ๋ก  ์ข€๋” ๋ฌธ์ œ๋ฅผ ๊ผผ๊ผผํžˆ ๋ณด๊ณ  ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถฐ์„œ ์ตœ๋Œ€ํ•œ์˜ ํšจ์œจ๋กœ ํ’€์–ด์•ผ๊ฒ ๋‹ค.

๐Ÿซง ์˜ค๋Š˜์˜ ๊ณ ๋ฏผ

๋ฆฌ์•กํŠธ handle ํ•จ์ˆ˜ ๋„ค์ด๋ฐ

๊ทธ๋™์•ˆ ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ ํ•˜๋‚˜์—์„œ handle ํ•จ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚ ์ˆ˜๋ก ๋„ˆ๋ฌด ๊ฐ€๋…์„ฑ์ด ์•ˆ์ข‹๋‹ค๊ณ  ๋Š๊ผˆ๋‹ค. ์ด๋ฒˆ์— ์ธํ„ด์‹ญ ๊ณผ์ œ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ์ปดํฌ๋„ŒํŠธ ํ•˜๋‚˜์— ๋น„์Šค๋ฌด๋ฆฌํ•œ ์ด๋ฆ„์œผ๋กœ ์—ฌ๋Ÿฌ๊ฐœ์˜ handle ํ•จ์ˆ˜ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜์–ด์„œ ๋‚ด ๋‚˜๋ฆ„๋Œ€๋กœ์˜ ๊ทœ์น™์„ ๊ฐ€์งˆ ํ•„์š”๊ฐ€ ์žˆ๋‹ค๊ณ  ๋Š๊ผˆ๋‹ค. ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋‘”๋‹ค.(ํŽธ์˜์ƒ ๋ฐ˜ํ™˜๋˜๋Š” JSX ์ฝ”๋“œ๋Š” ์ƒ๋žตํ–ˆ๋‹ค.)

๋จผ์ € ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์–ด๋ณด์ธ๋‹ค.

const [value, setValue] = useState('');
const handleInput = (e) => {
  setValue(e.target.value);
};

ํ•˜์ง€๋งŒ ์ปดํฌ๋„ŒํŠธ ๋‚ด์—์„œ ๋™์ผํ•œ input ํƒœ๊ทธ์ด๋ฉด์„œ ์กฐ๊ธˆ์€ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋ฉด ์ •๋ง ์ตœ์•…์ด๋‹ค. ์ผ๋‹จ ๋‹น์žฅ์˜ handle ํ•จ์ˆ˜๋“ค์ด ์–ด๋–ค ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€ ์ „ํ˜€ ๊ฐ์ด ์˜ค์งˆ ์•Š๋Š”๋‹ค. ๊ทธ๋‚˜๋งˆ ์œ„์˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์ปดํฌ๋„ŒํŠธ ๋‚ด์— input ํƒœ๊ทธ๊ฐ€ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•œ๋‹ค๋ฉด ์–ด๋Š์ •๋„ ๊ธˆ๋ฐฉ ๊ฐ์ด ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

const [value, setValue] = useState('');
const [value2, setValue2] = useState('');
const handleInput = (e) => {
  setValue(e.target.value);
};
const handleInput2 = (e) => {
  setValue2(e.target.value);
};

๊ทธ๋ž˜์„œ ์•ž์œผ๋กœ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋ ค ํ•œ๋‹ค.

const handleEmailInputChange = (e) => {
  setEmail(e.target.value);
};
const handlePasswordInputChange = (e) => {
  setPassword(e.target.value);
};

handle ํ•จ์ˆ˜์ด๋ฏ€๋กœ handle์„ ๋งจ์•ž์— ๋ถ™์ด๊ณ (์ด ๋ถ€๋ถ„์€ ๋ฆฌ์•กํŠธ ๊ณต์‹๋ฌธ์„œ์—๋„ ์ปจ๋ฒค์…˜์œผ๋กœ ๋‚˜์˜จ๋‹ค.) ๋์—๋Š” ์ด ํ•จ์ˆ˜๊ฐ€ ์–ด๋–ค ์ด๋ฒคํŠธ์—์„œ ์“ฐ์ด๋Š”์ง€ ์•Œ๊ธฐ์œ„ํ•ด ์ด๋ฒคํŠธ ํƒ€์ž…์„ ๋ถ™์—ฌ์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ฐ€์šด๋ฐ์—๋Š” ์ด ํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ํƒœ๊ทธ์˜ ์ด๋ฆ„์„ ๋ถ™์—ฌ์ค€๋‹ค. ์ด๋ ‡๊ฒŒ๊นŒ์ง€๋งŒ ์ž‘์„ฑํ•ด๋„ ๊ฐ€๋…์„ฑ์ด ์ถฉ๋ถ„ํ•˜๋‹ค๋ฉด ๋ฉˆ์ถ˜๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ ์ด์™€ ๊ฐ™์ด ์ž‘์„ฑํ•ด์„œ ๊ทธ ๋‚ด์šฉ์ด ๊ฒน์น˜๊ฒŒ ๋  ๋•Œ์—๋Š” handle ๋’ค์— ์ด ํ•จ์ˆ˜๊ฐ€ ์–ด๋–ค ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ์งง์€ ๋‹จ์–ด๋กœ ์ ์–ด์ค€๋‹ค.

์‚ฌ์‹ค ์ด ๋ฐฉ๋ฒ•์ด ์ข‹์€์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, ์ ์–ด๋„ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋“ค์„ ๋ดค์„ ๋•Œ JSX๋ฅผ ๋ณด์ง€ ์•Š๊ณ ๋„ ๋น ๋ฅด๊ฒŒ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋Œ์•„๊ฐ€๋Š” ๋กœ์ง์ด ํŒŒ์•…์ด ๋˜์–ด์„œ ์ข‹์•˜๋‹ค. ์กฐ๊ธˆ ๊ธธ์–ด์ง€๋”๋ผ๋„ ์ด๋Ÿฐ ์ปจ๋ฒค์…˜์„ ์œ ์ง€ํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณด๋ ค ํ•œ๋‹ค.

๐ŸŒˆ ์˜ค๋Š˜์˜ ํšŒ๊ณ 

์˜ค๋Š˜์€ ๊ฑฐ์˜ ํ•˜๋ฃจ์ข…์ผ ๊ณผ์ œ ๊ตฌํ˜„์— ์ดˆ์ ์„ ๋งž์ถ˜ ๊ฒƒ ๊ฐ™๋‹ค. ๊ธฐ๋Šฅ ๊ตฌํ˜„์€ ์‚ฌ์‹ค์ƒ ๊ฑฐ์˜ ๋‹ค ํ•ด์„œ ์•„์ฃผ ๋งŒ์กฑ์Šค๋Ÿฝ๋‹ค. ์š”์ฆ˜ ์ •๋ง ๋ฐ”์˜๊ฒŒ ์—ด์‹ฌํžˆ ์‚ด๊ณ  ์žˆ๋Š”๋ฐ, ๋”ฑ ํ•˜๋‚˜ ์ž ๋งŒ ์ž˜ ์ž๋„๋ก ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค..! ์—์–ด์ปจ๋น„๋„ ์•„๊นŒ์›Œ์„œ ์•ˆ์ผฐ๋Š”๋ฐโ€ฆ ์ด์ œ๋Š” ์ข€ ์ผœ๊ณ  ์ž์•ผ์ง€.

๐Ÿพ ์˜ค๋Š˜์˜ ๊ตํ›ˆ

๋ฐค์— ์ž˜ ๋•Œ, ์—์–ด์ปจ ์ผœ๊ณ  ์ž์ž..!ใ…‹ใ…‹ใ…‹

๐Ÿชต ์ฐธ๊ณ 

  • ์—†์Œ