230805(ํ )
๐ค ์ฑ์ฅ์ผ์ง 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๋ฅผ ๋ณด์ง ์๊ณ ๋ ๋น ๋ฅด๊ฒ ์ปดํฌ๋ํธ๊ฐ ๋์๊ฐ๋ ๋ก์ง์ด ํ์ ์ด ๋์ด์ ์ข์๋ค. ์กฐ๊ธ ๊ธธ์ด์ง๋๋ผ๋ ์ด๋ฐ ์ปจ๋ฒค์ ์ ์ ์งํด์ ์ฝ๋๋ฅผ ์์ฑํด๋ณด๋ ค ํ๋ค.
๐ ์ค๋์ ํ๊ณ
์ค๋์ ๊ฑฐ์ ํ๋ฃจ์ข ์ผ ๊ณผ์ ๊ตฌํ์ ์ด์ ์ ๋ง์ถ ๊ฒ ๊ฐ๋ค. ๊ธฐ๋ฅ ๊ตฌํ์ ์ฌ์ค์ ๊ฑฐ์ ๋ค ํด์ ์์ฃผ ๋ง์กฑ์ค๋ฝ๋ค. ์์ฆ ์ ๋ง ๋ฐ์๊ฒ ์ด์ฌํ ์ด๊ณ ์๋๋ฐ, ๋ฑ ํ๋ ์ ๋ง ์ ์๋๋ก ํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค..! ์์ด์ปจ๋น๋ ์๊น์์ ์์ผฐ๋๋ฐโฆ ์ด์ ๋ ์ข ์ผ๊ณ ์์ผ์ง.
๐พ ์ค๋์ ๊ตํ
๋ฐค์ ์ ๋, ์์ด์ปจ ์ผ๊ณ ์์..!ใ ใ ใ
๐ชต ์ฐธ๊ณ
- ์์