๐คทโ๏ธ ๋ณธ๋ก ์ ์์ ์ค์ํ ๋ฐฐ์ด ์ฌ์ ์ง์ ๊ณต๋ถํ๊ธฐ
๋ฐฐ์ด reduce() ํจ์ ์ฌ์ฉ๋ฒ์ ๋ํด ์์๋ณด๊ธฐ
https://cometruedream.tistory.com/259
[์๋ฐ์คํฌ๋ฆฝํธ] ๋ฐฐ์ด(array) filter ํจ์์ ๊ฐ๋ ๋ฐ ์ฌ์ฉ๋ฒ
๐คทโ๏ธ ๋ณธ๋ก ์ ์์ ์ค์ํ ๋ฐฐ์ด ์ฌ์ ์ง์ ๊ณต๋ถํ๊ธฐ "> HTML ์ฝ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐํ ์ ์๋ ์์ค๋ฐฐ์ด reduce() ํจ์ ์ฌ์ฉ๋ฒ์ ๋ํด ์์๋ณด๊ธฐhttps://cometruedream.tistory.com/256 [์๋ฐ์คํฌ๋ฆฝํธ] ๋ฐฐ์ด(array) redu
cometruedream.tistory.com
๋ฐฐ์ด reduce() ํจ์ ์ฌ์ฉ๋ฒ์ ๋ํด ์์๋ณด๊ธฐ
https://cometruedream.tistory.com/256
[์๋ฐ์คํฌ๋ฆฝํธ] ๋ฐฐ์ด(array) reduce ํจ์์ ๊ฐ๋ ๋ฐ ํ์ฉ๋ ๋์ ์ฌ์ฉ๋ฒ
๐คทโ๏ธ ๋ณธ๋ก ์ ์์ ์ค์ํ ๋ฐฐ์ด ์ฌ์ ์ง์ ๊ณต๋ถํ๊ธฐ ๋ฐฐ์ด join() ํจ์ ์ฌ์ฉ๋ฒ์ ๋ํด ์์๋ณด๊ธฐhttps://cometruedream.tistory.com/254 [์๋ฐ์คํฌ๋ฆฝํธ] ๋ฐฐ์ด(array)์ ์ ์ฉํ๊ฒ ํ์ฉํ ์ ์๋ join ํจ์ ๊ฐ
cometruedream.tistory.com
๋ฐฐ์ด join() ํจ์ ์ฌ์ฉ๋ฒ์ ๋ํด ์์๋ณด๊ธฐ
https://cometruedream.tistory.com/254
[์๋ฐ์คํฌ๋ฆฝํธ] ๋ฐฐ์ด(array)์ ์ ์ฉํ๊ฒ ํ์ฉํ ์ ์๋ join ํจ์ ๊ฐ๋ ๋ฐ ์ฌ์ฉ๋ฒ
๐คทโ๏ธ ๋ณธ๋ก ์ ์์๋ฐฐ์ด์ javascript์์ ๊ฐ์ฅ ์ค์ํ ๋ฐ์ดํฐ ์๋ฃ๊ตฌ์กฐ ์ค ํ๋์ ๋๋ค.๋ฐฐ์ด์ ๋ด์ฅํจ์๋ฅผ ํ์ฉํ๋ ๊ฒ์ javascript์์ ์ค์ํ ๋ถ๋ถ ์ค ํ๋์ด๋ฉฐ join() ๋ฐฐ์ด ๋ฉ์๋๋ ๋ฐฐ์ด์ ํฉ
cometruedream.tistory.com
๋ฐฐ์ด map(), forEach() ์ธ๊ธฐ ์๋ ๋ฉ์๋ ์ฌ์ฉ๋ฒ์ ๋ํด ์์๋ณด๊ธฐ
https://cometruedream.tistory.com/253
[์๋ฐ์คํฌ๋ฆฝํธ] ๋ฐฐ์ด(array)์ ์ฒ๋ฆฌํ๋ ์ธ๊ธฐ์๋ ๋ฉ์๋ map(), forEach() ๊ฐ๋ ๊ณผ ์ฐจ์ด์
๐คทโ๏ธ ๋ณธ๋ก ์ ์์์๋ฐ์คํฌ๋ฆฝํธ๋ ํ์ฌ ์น/์ฑ ๊ฐ๋ฐ ํธ๋ ๋์์ ํ์์ ์ผ๋ก ์ฌ์ฉ๋๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋๋ค. ์ฌ๋ฌ ์์ดํ ์ ์ ์ฅํ๋๋ฐ ์ฌ์ฉ๋๋ ๋ฐฐ์ด๊ณผ ์ด๋ฅผ ํ์ฑํ๋ฉฐ ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ
cometruedream.tistory.com
ํ์ฉ๊ฐ์น๊ฐ ์ข์ every(), some() ํจ์ ์ฌ์ฉ๋ฒ์ ๋ํด ์์๋ณด๊ธฐ
https://cometruedream.tistory.com/250
[์๋ฐ์คํฌ๋ฆฝํธ] ํ์ฉ๊ฐ์น๊ฐ ์ข์ ๋ด์ฅํจ์์ every(), some() ํจ์์ ๊ฐ๋ ๋ฐ ํ์ฉ๋ฒ
๐คทโ๏ธ ์๋ฐ์คํฌ๋ฆฝํธ ๋ด์ฅ ํจ์๋?์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํจ์จ์ ์ผ๋ก ํ์ฉํ๋ ค๋ฉด ๋ด์ฅ ํจ์๋ฅผ ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.๋ด์ฅ ํจ์๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฏธ๋ฆฌ ์ ์ธ๋ ํจ์๋ก, ํธ์ถ๋ง์ผ๋ก ์ฌ์ฉํ ์ ์์ต
cometruedream.tistory.com
๐คทโ๏ธ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋?
์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋๋ค.
๊ฐ์ฒด ์งํฅ ๋ง ๊ทธ๋๋ก ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ, ์กฐํ, ์์ , ์ญ์ ์ ์ฝ๋๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
๊ฐ์ฒด๋๋ object๋ผ๊ณ ๋ ๋ถ๋ฆ ๋๋ค. ๊ฐ์ฒด๋ ๋ค๋ฅธ ๋ฐ์ดํฐ ์ ํ๊ณผ ๋ฌ๋ฆฌ ๋์ ์ผ๋ก ์์ฑ์ ์ถ๊ฐ, ์ญ์ , ์์ ์ ํ ์ ์์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์ ๋ฌธ์ฑ์ ๋์ด๊ธฐ ์ํด์ ๊ฐ์ฒด์ ๊ฐ๋ ๊ณผ ์ฌ์ฉ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ ๋ฌด์์ธ๊ฐ?
๐ก ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ ํฌํจํ๋ ๋ฐ์ดํฐ ์ ํ์ ๋๋ค. ๊ฐ์ฒด๋ {}๋ก ํ์๋๋ฉฐ ๊ฐ์ฒด๋ ์์ฑ์ด๋ผ๊ณ ํ๋ ๋ณ์์ ํจ์๊ฐ ํฌํจ๋ฉ๋๋ค. ์์ฑ์ ๊ฐ์ฒด์ ์ํ๋ฅผ ์ ์ฅํ๊ณ ํจ์๋ ๊ฐ์ฒด์ ๋์์ ๊ฒฐ์ ํฉ๋๋ค.
๐คทโ๏ธ ๊ฐ์ฒด(object)๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ?
์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ค์ํ ๋ฐฉ๋ฒ๋ค์ด ์์ต๋๋ค.
๋ค์์ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ ์ค ๋ช ๊ฐ์ง ์์์ ๋๋ค.
๋ฆฌํฐ๋ด ํ๊ธฐ๋ฒ(Literal Notation)
const person = {
firstName: "๊ตญํ",
lastName: "์ ",
age: 28,
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
๊ฐ์ฒด ๋ฆฌํฐ๋ด ๋ฐฉ์์ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ ์ฐํจ๊ณผ ๊ฐ๋ ฅํจ์ ๋ํํ๋ ๊ฐ์ฒด ์์ฑ ๋ฐฉ์์ด๋ค.
๊ฐ์ฑ๋ฅผ ์์ฑํ๊ธฐ ์ํด์ ํด๋์ค๋ฅผ ์ ์ํ๊ฑฐ๋ ์ธ์คํด์ค๋ฅผ ์ ์ธํ์ง ์๊ณ ๋ ์ฝ๊ฒ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์์ฑ์ ํจ์(Constructor Function)
function Person(firstName, lastName, age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.fullName = function() {
return this.firstName + " " + this.lastName;
}
}
const person = new Person("๊ตญํ", "์ ", 28);
๐คทโ๏ธ ๊ฐ์ฒด(object)๋ฅผ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ?
์๋ฐ์คํฌ๋ฆฝํธ์์ ๊ฐ์ฒด์ ์์ฑ์ ์ ๊ทผํ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์กด์ฌํฉ๋๋ค.
๊ฐ์ฒด์ ์์ฑ์๋ ์ (dot)๊ณผ ๋๊ดํธ(bracket)๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ทผํ ์ ์์ต๋๋ค.
์ (dot) ๊ฐ์ฒด ์ ๊ทผ๋ฒ
const person = {
firstName: "๊ตญํ",
lastName: "์ ",
age: 32,
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
console.log(person.firstName); // ๊ฒฐ๊ณผ๊ฐ: ๊ตญํ
๋๊ดํธ(bracket) ๊ฐ์ฒด ์ ๊ทผ๋ฒ
const person = {
firstName: "๊ตญํ",
lastName: "์ ",
age: 32,
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
console.log(person["firstName"]); // ๊ฒฐ๊ณผ๊ฐ: ๊ตญํ
๋ํ์ ์ผ๋ก ์ฌ์ฉํ๋ ์ (dot)๊ณผ ๋๊ดํธ(bracket) ํ์ฉํด์ ๊ฐ์ฒด์ ์์ฑ์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์์ต๋๋ค.
๐คทโ๏ธ ๊ฐ์ฒด(object) ๋ค๋ฃจ๊ธฐ?
์๋ฐ์คํฌ๋ฆฝํธ์์ ๊ฐ์ฒด๋ฅผ ๋ค๋ฃจ๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
๊ฐ์ฒด์ ๊ฐ์ ๋ณ๊ฒฝํ๊ณ ์๋ก์ด ์์ฑ์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค.
https://cometruedream.tistory.com/223
immer๋ฅผ ์ฌ์ฉํด์ ๋ถ๋ณ์ฑ์ ์ง์ผ์ผํ๋ ์ด์ ์ ์์ ๋ณต์ฌ์ ๊ฐ๋
immer ๋? React์์ ๋ถ๋ณ์ฑ์ ์ ์งํ๋๋ผ ๋์กํด์ง ์ฝ๋๋ฅผ ์งง๊ณ ๊ฐ๊ฒฐํ๊ฒ ๋ถ๋ณ์ฑ์ ์ ์งํ ์ ์๊ฒ ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ๋ฐ๋๋ก immer ์ฌ์ฉํจ์ผ๋ก ์งง์ ์ฝ๋๊ฐ ๊ธธ์ด์ง๋ ๊ฒฝ์ฐ๋ ์๋ค. ๋ถ๋ณ์ฑ
cometruedream.tistory.com
๊ฐ์ฒด ์์ ํ๋ ๋ฐฉ๋ฒ
const person = {
firstName: "๊ตญํ",
lastName: "์ ",
age: 32,
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
person.firstName = "์ฅํ";
person.age = 29;
console.log(person.firstName) //๊ฒฐ๊ณผ๊ฐ: ์ฅํ
๊ฐ์ฒด ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ
const person = {
firstName: "๊ตญํ",
lastName: "์ ",
age: 32,
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
pserson.area = '์์ธ'
console.log(pserson.area) //๊ฒฐ๊ณผ๊ฐ: ์์ธ
๊ฐ์ฒด ์ญ์ ํ๋ ๋ฐฉ๋ฒ
const person = {
firstName: "๊ตญํ",
lastName: "์ ",
age: 32,
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
delete person.age
console.log(pserson.age) //undefined
๊ฐ์ฒด ๋ณํฉํ๋ ๋ฐฉ๋ฒ
const person = {
firstName: "๊ตญํ",
lastName: "์ ",
age: 32,
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const coiedPerson = Object.assign({}, person)
console.log(coiedPerson)
//๊ฒฐ๊ณผ๊ฐ:
{
"firstName": "๊ตญํ",
"lastName": "์ ",
"age": 32
}
๊ฐ์ฒด๋ฅผ ๋ถํดํ๋ ๋ฐฉ๋ฒ
๊ตฌ์กฐ๋ถํดํ ๋น์ด๋ฉฐ ๋ง์ด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
const person = {
firstName: "๊ตญํ",
lastName: "์ ",
age: 32,
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
const {firstName, lastName, age} = person;
console.log(firstName) //๊ตญํ
console.log(lastName) //์
console.log(age) //32
์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋ฉฐ ๊ฐ์ฒด๋ key์ value ์์ฑ์ ๊ฐ์ง๊ณ ์์ผ๋ฉด ์์์ ์ถ๊ฐ, ์ญ์ , ์์ , ๋ณํฉ, ๊ตฌ์กฐ๋ถํดํ ๋น์ ๋ํด์ ์์๋ณด์์ต๋๋ค.
๐คทโ๏ธ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด์ JSON?
JSON์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ฅผ ์ ์กํ๊ธฐ ์ํ ๊ฒฝ๋ ๋ฐ์ดํฐ ๊ตํ ๋ฐฉ์์ ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๊ฐ์ฒด๋ฅผ JSON์ผ๋ก JSON์ ๊ฐ์ฒด๋ก ๋ณํํ์ฌ ๋ค๋ฅธ ์์คํ ์ ์ ์กํ ์ ์์ต๋๋ค.
JSON ๋ฌธ์์ด ํน์ง
๐ก JSON ๋ฌธ์์ด์ ํน์ง์ key์ value ์๋ค์ดํ์ ๊ฐ์ธ์ ธ ์์ต๋๋ค.
๊ฐ์ฒด๋ฅผ ๋ถํดํ๋ ๋ฐฉ๋ฒ
const person = {
firstName: "๊ตญํ",
lastName: "์ ",
age: 32,
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
console.log(JSON.stringify(person))
//๊ฒฐ๊ณผ๊ฐ: {"firstName":"๊ตญํ","lastName":"์ ","age":32}
์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ฅผ JSON ๋ฌธ์์ด๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ
const json = '{"firstName":"๊ตญํ","lastName":"์ ","age":32}'
const person = JSON.parse(json);
console.log(person);
๐คทโ๏ธ ๋ง์ง๋ง์ผ๋ก
์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ๋ฉ์๋๋ฅผ ๋ชจ๋ ํฌํจํ key์ value์ ๋ฐ์ดํฐ ์ ํ์ ๋๋ค.
๊ฐ์ฒด๋ฅผ ์์ฑ, ์์ , ์ญ์ , ๋ณํฉ, ์กฐํ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์์ผ๋ฉฐ ๊ฐ์ฒด์ JSON ๋ณํํ๋ ๋ฐฉ๋ฒ๋ ์์๋ณด์์ต๋๋ค.
๊ฐ์ฒด๋ฅผ ๋ค๋ฃจ๋ ๊ฒ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋จ์์ ์ค์ํ ๊ธฐ์ ์ด๋ฉฐ ์ง๊ธ์ ๊ธฐ๋ณธ์ ์ธ ๋ถ๋ถ๋ง ๋ค๋ค์ง๋ง ๋ ์ ๋ฌธ์ฑ์ ๋์ด๊ธฐ ์ํด์ ๊ณ์ํด์ ๊ณต๋ถ๋ฅผ ํด์ผ๊ฒ ์ต๋๋ค.
์ฌ๋ฐ๋ ์ค๋์ ๋ ๋ณ ์ด์ธ ๋ณด๊ณ ๊ฐ์ธ์!
https://cometruedream.tistory.com/247
[React] Tailwind ํ์ค, ๋์ค, ์ธ์ค ํจ๊ณผ className ์ปค์คํ
๐คทโ๏ธ Tailwind ํ์ค, ๋์ค, ์ธ์ค ํจ๊ณผํ๋ก์ ํธ ์งํ์ค ๋ฐฐ๋ ๋งํฌ์ URL ๊ธธ์ด๊ฐ ๋๋ฌด ๊ธธ์ด์ 3์ค ํจ๊ณผ ์ฒ๋ฆฌ๋ฅผ ํด์ผ ํ์ต๋๋ค. React + Tailwind CSS ์ ํ ๋ ํ๋ก์ ํธ ์ฌ์ CSS ํ์ผ & style ํ๊ทธ๋ฅผ ์ฌ์ฉํ
cometruedream.tistory.com
https://cometruedream.tistory.com/243
NestJS Lifecycle (์๋ช ์ฃผ๊ธฐ) ๊ฐ๋
๐คทโ๏ธ ๋ณธ๋ก ์ ์์ Nest JS ๊ฐ๋ ?Nest JS๋ Node JS ๊ธฐ๋ฐ์ผ๋ก ํ ์๋ฒ ์ดํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ ์ ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ์๋นํ ์ค๋ซ๋์ Express ๊ธฐ๋ฐ์ผ๋ก ์๋ฒ ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์์ ์๋์ ์ธ ์
cometruedream.tistory.com
https://cometruedream.tistory.com/242
๋ฆฌ์กํธ Vite Proxy ํ์ฉํ CORS ์ค๋ฅ ํด๊ฒฐ
๐คทโ๏ธ ๋ณธ๋ก ์ ์์ํ๋ก ํธ์๋ ๋ฒ๋ค๋ฌ ๊ฐ๋ ๊ณผ webpack vs vite ๋น๊ต์ ๋ํด์ ๊ณต๋ถ๋ฅผ ํ๊ณ ๊ธ์ ๋ณด์๋ฉด ๋ ๋ง์ ๋์์ด ๋ฉ๋๋ค^^ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์ํ ๋ฒ๋ค๋ฌ ๊ฐ๋ ๊ณผ webpack vs vite ๋น๊ตhttps://comet
cometruedream.tistory.com
https://cometruedream.tistory.com/241
React ํด๋๊ตฌ์กฐ FSD ๊ธฐ๋ฅ ๋ถํ ์ค๊ณ ์ํคํ ์ฒ
๐คทโ๏ธ ๋ณธ๋ก ์ ์์ํ๋ก์ ํธ๋ฅผ ์์ํ๊ธฐ์ ์์ ํด๋ ๊ตฌ์กฐ, ์ค๊ณ์ ๋ํ ์ํคํ ์ฒ๋ฅผ ๋ง๋๋ ๊ฒ์ ์๋นํ ์ด๋ ต๋ค. ์ด๋ฒ ํ๋ก์ ํธ์ React FSD ํด๋๊ตฌ์กฐ ์ํคํ ์ฒ๋ฅผ ์ค๊ณํ ์์ ์ด๋ผ์ FSD ์ํคํ
cometruedream.tistory.com
https://cometruedream.tistory.com/244
์ฝ๊ฒ ์ดํดํ๊ณ ์ฌ์ฉํ ์ ์๋ Prisma ๋ช ๋ น์ด ์ ๋ฆฌ
๐คทโ๏ธ Prisma ๋ช ๋ น์ด ๋ณธ๋ก ์ ์์ Prisma๋?Nest JS ํ๋ ์์ํฌ์ Prisma ORM์ ํ์ฉํด์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ Prisma๋ Node JS ๊ธฐ๋ฐ์ ํ๋ ์์ํฌ/๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํธ์์ฉ์ด ์๋๋ฉฐ Prisma + DB ์ฐ๋์ผ
cometruedream.tistory.com