๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ/HTML, CSS, JS

JavaScript Essentials

by Jaeguk 2023. 2. 5.
 
import { random } from './getRandom'
import _ from 'lodash'
import getType from './getType'
import * as R from './export_practice'
import myData from './myData.json'
import axios from 'axios'
 
// ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž(arithmetic operator) + - * / %
// ํ• ๋‹น ์—ฐ์‚ฐ์ž(assignment operator) =
// ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž(logical operator)
// ์‚ผํ•ญ ์—ฐ์‚ฐ์ž(ternary operator) ? 
 
// var ๋ณ€์ˆ˜๋Š” let, const ๋ณ€์ˆ˜์™€ ๋‹ค๋ฅด๊ฒŒ ๋ธ”๋ก ๋ ˆ๋ฒŒ์˜ ๋ฒ”์œ„๊ฐ€ ์•„๋‹Œ ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ๋ฒ”์œ„ ๋‚ด์—์„œ ์œ ํšจํ•˜๋‹ค.
 
function sum() {
  let a = 0
  for(let i = 0; i < arguments.length; i++)
    a += arguments[i]
  return a
}
 
// ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉ๋  ๋•Œ๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ณ€์ˆ˜์— ๋‹ด์•„์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ด๋‹ค.
 
// ํ˜ธ์ด์ŠคํŒ…(Hoisting)
// ํ•จ์ˆ˜ ์„ ์–ธ๋ถ€๊ฐ€ ์œ ํšจ๋ฒ”์œ„ ์ตœ์ƒ๋‹จ์œผ๋กœ ๋Œ์–ด์˜ฌ๋ ค์ง€๋Š” ํ˜„์ƒ
// ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ๋จผ์ € ํ•œ ํ›„ ๋’ค์ชฝ์—์„œ ํ•จ์ˆ˜ ์„ ์–ธ์„ ํ•ด๋„ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค
 
 
// ํƒ€์ด๋จธ ํ•จ์ˆ˜ (์ „์—ญ ํ•จ์ˆ˜)
// setTimeout(ํ•จ์ˆ˜, ์‹œ๊ฐ„): ์ผ์ • ์‹œ๊ฐ„ ํ›„ ํ•จ์ˆ˜ ์‹คํ–‰
// setInterval(ํ•จ์ˆ˜, ์‹œ๊ฐ„): ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ๋งˆ๋‹ค ํ•จ์ˆ˜ ์‹คํ–‰(๋ฐ˜๋ณต์ ์œผ๋กœ)
// clearTimeout(): ์„ค์ •๋œ Timeout ํ•จ์ˆ˜๋ฅผ ์ข…๋ฃŒ
// clearInterval(): ์„ค์ •๋œ Interval ํ•จ์ˆ˜๋ฅผ ์ข…๋ฃŒ
 
const timeoutTimer = setTimeout(() => {
  console.log('Success!')
}, 3000)
 
const intervalTimer = setInterval(() => {
  console.log('Repeat!')
}, 3000)
// setTimeout, setInterval ํ•จ์ˆ˜๋Š” ํƒ€์ด๋จธ๋ฅผ ๋ฆฌํ„ดํ•˜๋Š”๋ฐ,
// ์ด ํƒ€์ด๋จธ๋ฅผ ๋ฆฌํ„ด๋ฐ›์•„์„œ clearTimeout์ด๋‚˜ clearInterval ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋กœ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค
clearTimeout(timeoutTimer)
clearInterval(intervalTimer)
 
const h1El = document.querySelector('body h1')
h1El.addEventListener('click', () => {
  clearTimeout(timeoutTimer)
  //๋งŒ์•ฝ h1 ์š”์†Œ๋ฅผ ํด๋ฆญํ•˜๋ฉด timer๊ฐ€ ์ •์ง€๋˜๋„๋ก EventListener ์ถ”๊ฐ€
})
 
// const stopBtn = document.querySelector('.stopRepeat')
// stopBtn.addEventListener('click', () => {
//   clearInterval(intervalTimer)
//   // stop ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋ฐ˜๋ณต์ด ์ข…๋ฃŒ๋˜๋„๋ก 
// })
 
// ์ฝœ๋ฐฑ(Callback)
// ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ•จ์ˆ˜
 
// this
// ์ผ๋ฐ˜(Normal) ํ•จ์ˆ˜๋Š” ํ˜ธ์ถœ ์œ„์น˜์— ๋”ฐ๋ผ this ์ •์˜!
// ํ™”์‚ดํ‘œ(Arrow) ํ•จ์ˆ˜๋Š” ์ž์‹ ์ด ์„ ์–ธ๋œ ํ•จ์ˆ˜ ๋ฒ”์œ„์—์„œ this ์ •์˜!
 
 
const heropy = {
  name'Heropy',
  normal: function () {
    console.log(this.name)
  },
  wrapper: function() {
    (() => {
      console.log(this.name)
    })()
  }
}
heropy.normal()
heropy.wrapper()
 
 
 
//String method
//indexOf() => ์ผ์น˜ํ•˜๋Š” ๊ฐ’์ด ์—†์œผ๋ฉด -1 ๋ฐ˜ํ™˜
 
//number.toFixed()๋Š” String ํƒ€์ž…์œผ๋กœ ๋ฐ˜ํ™˜
//Math.ceil(), Math.floor(), Math.round()
//Math.random()
 
 
 
const numbers = [1234]
const fruits = ['Apple''Banana''Cherry''Blueberry']
 
//Array.map์€ ๊ธฐ์กด์˜ ๋ฐฐ์—ด๊ณผ ๊ฐ™์€ ์ˆ˜์˜ ์š”์†Œ๋ฅผ ๊ฐ€์ง€๋Š” ๋ฐฐ์—ด์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.
//Array.filter๋Š” ๊ธฐ์กด์˜ ๋ฐฐ์—ด๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ˆ˜์˜ ์š”์†Œ๋ฅผ ๊ฐ€์ง€๋Š” ๋ฐฐ์—ด์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.
 
const a = numbers.map(number => number < 3//[true, true, false, false]
 
const b = numbers.filter(number => number < 3//[1, 2]
 
//find, findIndex
 
const c = fruits.find(fruit => /^C/.test(fruit)) // 'Cherry'
// fruits.find(fruit => {
//   return /^C/.test(fruit)
// })
// ์ด๊ฑฐ๋ž‘ ๊ฐ™์Œ
 
const d = fruits.findIndex(fruit => /^C/.test(fruit)) // 2
 
//includes
const e = numbers.includes(3// true
 
const f = fruits.includes('Heropy'// false
 
//push(), unshift()
//์–˜๋„ค๋Š” ์›๋ณธ์ด ์ˆ˜์ •๋จ ์ฃผ์˜!
 
numbers.push(5// [1, 2, 3, 4, 5]
//numbers ๋ฐฐ์—ด ๋งจ ๋’ค์— 5๋ฅผ ์ถ”๊ฐ€ํ•จ
 
numbers.unshift(0// [0, 1, 2, 3, 4, 5]
//numbers ๋ฐฐ์—ด ๋งจ ์•ž์— 0์„ ์ถ”๊ฐ€ํ•จ
 
//reverse()
//์–˜๋„ ์›๋ณธ ์ˆ˜์ •๋จ ์ฃผ์˜!
numbers.reverse() // [5, 4, 3, 2, 1, 0]
numbers.reverse() // [0, 1, 2, 3 ,4, 5]
 
fruits.reverse() // ['Blueberry', 'Cherry', 'Banana', 'Apple']
fruits.reverse()
 
//.splice() ์‚ญ์ œ + ๋ผ์›Œ๋„ฃ๊ธฐ
// ์›๋ณธ ์ˆ˜์ •๋จ ์ฃผ์˜!
//splice(์ง€์šฐ๊ธฐ ์‹œ์ž‘ํ•  ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ, ์ง€์šธ ์š”์†Œ์˜ ๊ฐœ์ˆ˜, ๊ทธ ์ž๋ฆฌ์— ์‚ฝ์ž…ํ•  ๋ฐ์ดํ„ฐ ...)
 
numbers.splice(21)
// 2๋ฒˆ์งธ ์•„์ดํ…œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ 1๊ฐœ์˜ ์•„์ดํ…œ์„ ์ง€์›Œ๋ผ
//Before : [0, 1, 2, 3, 4, 5]
//After : [0, 1, 3, 4, 5]
 
numbers.splice(2199)
// 2๋ฒˆ์งธ ์•„์ดํ…œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ 1๊ฐœ์˜ ์•„์ดํ…œ์„ ์ง€์šฐ๊ณ  ๊ทธ ์ž๋ฆฌ์— 99๋ฅผ ๋ผ์›Œ๋„ฃ์–ด๋ผ
//Before : [0, 1, 3, 4, 5]
//After : [0, 1, 99, 4, 5]
numbers.splice(2,1,2,3// [0, 1, 2, 3, 4, 5]
 
fruits.splice(20'Orange')
//0๊ฐœ๋ฅผ ์ง€์šฐ๊ณ  Orange๋ฅผ ๋„ฃ์—ˆ์œผ๋ฏ€๋กœ ์‚ญ์ œ์—†์ด ๋ผ์›Œ๋„ฃ๋Š” ์˜๋ฏธ์ž„
//Before : ['Apple', 'Banana', 'Cherry', 'Blueberry']
//After : ['Apple', 'Banana', 'Orange', 'Cherry', 'Blueberry']
 
 
 
//Object.assign
//์ž์ฒด์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” ์ „์—ญ ๊ฐ์ฒด์ธ Object์— ์ •์˜๋œ ์ •์  ๋ฉ”์†Œ๋“œ
const userAge = {
  name'Heropy',
  age: 85
}
const userEmail = {
  name'Heropy',
  email: 'thesecon@gmail.com'
}
 
const target = Object.assign(userAge, userEmail)
console.log(target)
console.log(userAge)
console.log(target === userAge)
 
const obj1 = { k: 123 }
const obj2 = { k: 123 }
console.log(obj1)
console.log(obj2)
console.log(obj1 === obj2)
// ์™œ false? ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์ €์žฅ๋˜์–ด ์žˆ๊ณ ,
// ๋ณ€์ˆ˜๋Š” ๊ทธ ๋ฐ์ดํ„ฐ์˜ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐ๋ฅผ ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—
// ๋น„๊ต๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ์ฐธ์กฐํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ผ๋ฆฌ ๋น„๊ต๋ฅผ ํ•˜๊ฒŒ ๋˜๊ณ , ๊ทธ ์ฃผ์†Œ๊ฐ’์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— false๊ฐ€ ๋‚˜์˜จ๋‹ค.
// ๊ฐ์ฒด ๋‚ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ตํ•˜๋Š” ๊ฒŒ ์•„๋‹˜!!
 
// ๊ทธ๋ ‡๋‹ค๋ฉด ๋‘ ๊ฐœ ์ด์ƒ์˜ ๊ฐ์ฒด๋ฅผ ๊ธฐ์กด์˜ ๊ฐ์ฒด ์ค‘ ํ•˜๋‚˜์— ํ•ฉ์น˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ,
// ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ฑฐ๊ธฐ์— ํ•ฉ์น˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ?
 
const newObject = Object.assign({}, userAge, userEmail)
//์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ธฐ์กด์˜ ๊ฐ์ฒด๋ฅผ ์†์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ  ๊ฐ์ฒด๋“ค์„ ํ•ฉ์น  ์ˆ˜ ์žˆ๋‹ค.
 
const userTemp = Object.assign({}, userAge, userEmail)
 
 
//๊ฐ์ฒด ๋ฐ์ดํ„ฐ์˜ ํ‚ค๋“ค์„ ๊ฐ€์ ธ์™€์„œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜
const keys = Object.keys(userTemp)
console.log(keys)
 
//ํŠน์ • ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” value๋งŒ์„ ๊บผ๋‚ผ ์ˆ˜ ์žˆ๋‹ค
console.log(userTemp['email'])
 
const values = keys.map(key => userTemp[key])
console.log(values)
 
const values_other_way = Object.values(userTemp)
console.log(values_other_way)
 
console.log('---------------------------------------------------')
 
// ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น (Destructuring assignment)
// = ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น
 
const { name: userName, age, email, address = 'Korea' } = userTemp
// ์›ํ•˜๋Š” ์†์„ฑ๋“ค๋งŒ ๊บผ๋‚ด์–ด ๋ณ€์ˆ˜๋กœ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค
// E.g, user.address
// address ๋ณ€์ˆ˜์—๋Š” 'Korea'๋ผ๋Š” ๊ธฐ๋ณธ ๊ฐ’์„ ์ง€์ •ํ•ด์„œ userTemp๋ผ๋Š” ๊ฐ์ฒด ๋ฐ์ดํ„ฐ์— address ์†์„ฑ์ด ์—†๋‹ค๋ฉด ๊ธฐ๋ณธ ๊ฐ’์ด ์ง€์ •๋œ๋‹ค.
// ๊บผ๋‚ด์˜จ ์†์„ฑ์„ ๋‹ด์„ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์„ ์›ํ•˜๋Š” ๋Œ€๋กœ ์ง€์ •ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ฝœ๋ก (:)๊ธฐํ˜ธ๋ฅผ ํ†ตํ•ด ๋’ค์— ๋ช…์‹œํ•ด์ฃผ๋ฉด ๋œ๋‹ค
// userName === 'Heropy'
//console.log(name) ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์—๋Ÿฌ๋‚จ
 
const [fruit1, fruit2, fruit3, fruit4, fruit5, fruit6] = fruits // Apple Banana Orange Cherry Blueberry undefined
// ๋ฐฐ์—ด ๋ฐ์ดํ„ฐ๋„ ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์ด ๊ฐ€๋Šฅํ•˜๋‹ค
// ๋ฐฐ์—ด ๋ฐ์ดํ„ฐ์—๋Š” key๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ˆœ์„œ๋Œ€๋กœ ๋ฐ›์•„์˜จ๋‹ค
 
 
 
// ์ „๊ฐœ ์—ฐ์‚ฐ์ž (Spread)
// fruits = ['Apple', 'Banana', 'Cherry', 'Orange', 'Blueberry']
console.log(...fruits) //Apple Banana Orange Cherry Blueberry
//... ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐฐ์—ด์— ์ €์žฅ๋œ ๊ฐ ์•„์ดํ…œ๋“ค์„ ์ „๊ฐœํ•  ์ˆ˜ ์žˆ๋‹ค
 
function toObject(a, b, c) {
  return {
    a: a,
    b: b,
    c: c
  }
}
console.log(toObject(...fruits))
// console.log(toObject(fruits[0], fruits[1], fruits[2])) ์™€ ๊ฐ™๋‹ค
 
function toObject2(a, b, ...c) {
  return {
    a: a,
    b: b,
    c: c
  }
}
// ๋งค๊ฐœ ๋ณ€์ˆ˜์—์„œ๋„ ์ „๊ฐœ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค
// ๋‚จ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฐ์—ด์˜ ํ˜•ํƒœ๋กœ ๋ฐ›์•„์„œ c๋ผ๋Š” ๋งค๊ฐœ ๋ณ€์ˆ˜์— ๋‹ด์Œ
console.log(toObject2(...fruits))
 
const same_as_toObject2 = (a, b, ...c) => ({a, b, c})
// ๊ฐ์ฒด ๋ฐ์ดํ„ฐ์˜ ์†์„ฑ๊ณผ ๋งค๊ฐœ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์ด ๊ฐ™์„ ๋•Œ์—๋Š” ์ฝœ๋ก (:) ๋’ท๋ถ€๋ถ„ ์ƒ๋žต ๊ฐ€๋Šฅ
console.log(same_as_toObject2(...fruits))
 
console.log('---------------------------------------------------')
 
// ๋ฐ์ดํ„ฐ ๋ถˆ๋ณ€์„ฑ(Immutability)
// ์›์‹œ ๋ฐ์ดํ„ฐ: String, Number, Boolean, undefined, null
// ๋ฐ์ดํ„ฐ ๊ฐ€๋ณ€์„ฑ
// ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ: Object, Array, Function
 
 
// ์–•์€ ๋ณต์‚ฌ(Shallow copy), ๊นŠ์€ ๋ณต์‚ฌ(Deep copy)
// ๋‹จ์ˆœํžˆ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ๊ฐ’๋งŒ ๊ฐ™๊ฒŒ ๋งŒ๋“ค๋ฉด ์–•์€ ๋ณต์‚ฌ
// ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋‚ด์šฉ๋งŒ ๋ณต์‚ฌํ•˜๋ฉด ๊นŠ์€ ๋ณต์‚ฌ
 
// Object.assign({}, ๋ณต์‚ฌํ•  ๊ฐ์ฒด)
// copy = {...๋ณต์‚ฌํ•  ๊ฐ์ฒด}
 
// ๊ทธ๋Ÿฌ๋‚˜ ์ด๋ ‡๊ฒŒ ๋ณต์‚ฌ๋ฅผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
// ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ๋กœ ๋ฐฐ์—ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฐฐ์—ด ๋ฐ์ดํ„ฐ ์—ญ์‹œ ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์–•์€ ๋ณต์‚ฌ๊ฐ€ ์ด๋ฃจ์–ด์ง„๋‹ค.
 
 
// lodash (low dash) _
// ํŒจํ‚ค์ง€๋ฅผ ์ด์šฉํ•œ ๊นŠ์€ ๋ณต์‚ฌ
 
const user_to_copy = {
  name'Heropy',
  age: 85,
  emails: ['thesecon@gmail.com']
}
 
const copyUser = _.cloneDeep(user_to_copy) //Deep copy
console.log(copyUser === user_to_copy) // false
 
user_to_copy.age = 22
user_to_copy.emails.push('newmail@mail.com')
 
console.log(copyUser.emails === user_to_copy.emails) // false
 
// ๋ณต์‚ฌํ•  ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ๋‚ด์— ๋˜ ๋‹ค๋ฅธ ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ lodash๋ฅผ ํ†ตํ•ด ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ํ•˜์ž
 
console.log('---------------------------------------------------')
 
 
 
// ๊ฐ€์ ธ์˜ค๊ธฐ, ๋‚ด๋ณด๋‚ด๊ธฐ
// ๋‹ค๋ฅธ ํŒŒ์ผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ณด๋‚ด๋Š” ํ†ต๋กœ๋Š” Default export์™€ Named export 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค
// export default๋กœ ์ž‘์„ฑํ•œ ํ•จ์ˆ˜๋Š” Default export๋ฅผ ํ†ตํ•ด ๋‚ด๋ณด๋‚ด์ง€๊ฒŒ ๋˜๋ฉฐ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๋งŒ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
// default ํ‚ค์›Œ๋“œ๋ฅผ ๋นผ๊ณ  ์ž‘์„ฑํ•œ ํ•จ์ˆ˜๋Š” ๋ฐ˜๋“œ์‹œ ํ•จ์ˆ˜์˜ ์ด๋ฆ„์„ ๊ฐ€์ ธ์•ผ ํ•˜๋ฉฐ ํ•จ์ˆ˜์˜ ์ด๋ฆ„์„ ํ†ตํ•ด importํ•  ์ˆ˜ ์žˆ๋‹ค.
// ์ด ๊ฒฝ์šฐ์—๋Š” importํ•  ๋•Œ { } ์•ˆ์— importํ•  ํ•จ์ˆ˜์˜ ์ด๋ฆ„๋“ค์„ ๋‚˜์—ดํ•ด์ฃผ๋ฉด ๋œ๋‹ค.
// import * as R from './๋ถˆ๋Ÿฌ์˜ฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ํŒŒ์ผ๋ช…'
// ์ด๋ ‡๊ฒŒ * ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ๋‚ด์šฉ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์นญํ•˜๋Š” ์™€์ผ๋“œ์นด๋“œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
 
 
const random_number = random()
const double_random_number = R.double(random_number)
 
 
// ์ค‘๋ณต ์ œ๊ฑฐ _.uniq (lodash ํŒจํ‚ค์ง€ ์‚ฌ์šฉ)
 
const usersA =  [
  {userId: '1'name'Heropy'},
  {userId: '2'name'Neo'},
]
const usersB =  [
  {userId: '1'name'Heropy'},
  {userId: '3'name'Amy'},
]
const usersC = usersA.concat(usersB)
console.log('concat', usersC)
 
console.log('uniqBy', _.uniqBy(usersC, 'userId'))
// uniqBy๋Š” ํ•˜๋‚˜์˜ ๋ฐฐ์—ด ๋ฐ์ดํ„ฐ์—์„œ ํŠน์ •ํ•œ ์†์„ฑ์˜ ์ด๋ฆ„์œผ๋กœ ๊ณ ์œ ํ™”๋ฅผ ์‹œ์ผœ์ฃผ๋Š” Method
 
const usersD = _.unionBy(usersA, usersB, 'userId')
console.log('unionBy', usersD)
// unionBy๋Š” ํ•ฉ์น˜๊ธฐ ์ „์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐฐ์—ด ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ์ ์–ด์ฃผ๊ณ  ํ•ฉ์น  ๋•Œ ๊ณ ์œ ํ™”๋ฅผ ์‹œํ‚ฌ ์†์„ฑ์˜ ์ด๋ฆ„์„ ์ž‘์„ฑ
 
console.log('---------------------------------------------------')
 
// _.find (lodash ํŒจํ‚ค์ง€ ์‚ฌ์šฉ)
const users = [
  { userId: '1'name'Heropy' },
  { userId: '2'name'Neo' },
  { userId: '3'name'Amy' },
  { userId: '4'name'Evan' },
  { userId: '5'name'Lewis' },
]
 
const foundUser = _.find(users, { name'Amy' })
const foundUserIndex = _.findIndex(users, { name'Amy' })
console.log(foundUser)
console.log('Amy\'s index: ', foundUserIndex)
 
// _.remove (lodash ํŒจํ‚ค์ง€ ์‚ฌ์šฉ)
_.remove(users, { name'Heropy' })
console.log('After remove', users)
 
console.log('---------------------------------------------------')
 
// JSON (JavaScript Object Notation)
// ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ฒด ํ‘œ๊ธฐ๋ฒ•
// JSON์ด๋ผ๋Š” ํฌ๋งท์€ ์ •ํ™•ํžˆ๋Š” ํ•˜๋‚˜์˜ ๋ฌธ์ž ๋ฐ์ดํ„ฐ์ด์ง€๋งŒ ํ•ด์„๋˜๋Š” ์™€์ค‘์— import๋กœ ๊ฐ€์ ธ์™€์ง€๋ฉด ๊ฐ์ฒด ๋ฐ์ดํ„ฐ์ฒ˜๋Ÿผ ๋ณด์—ฌ์ง„๋‹ค.
 
const user = {
  name'Heropy',
  age: 85,
  emails: [
    'thesecon@gmail.com',
    'neo@zilinks.com'
  ]
}
console.log('user', user)
 
const str = JSON.stringify(user)
// ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ JSON ํฌ๋งท์— ๋งž๊ฒŒ ๋ฌธ์žํ™”
console.log('str', str)
console.log(typeof str)
 
// ํ•˜๋‚˜์˜ ๋ฌธ์ž ๋ฐ์ดํ„ฐ์ธ JSON์„ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด parse ์‚ฌ์šฉ
const obj = JSON.parse(str)
console.log('obj', obj)
 
console.log('---------------------------------------------------')
// localStroage, sessionStorage
// google์— local storage mdn ๊ฒ€์ƒ‰
// ๋ฌธ์ž ๋ฐ์ดํ„ฐ๋กœ ์ €์žฅํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ๊ณ 
 
// JSON.stringify()๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌธ์ž ๋ฐ์ดํ„ฐํ™” ์‹œ์ผœ์คŒ
localStorage.setItem('user', JSON.stringify(user))
// ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์ €์žฅ๋œ user ๋ฐ์ดํ„ฐ๋Š” ๋ฌธ์ž ๋ฐ์ดํ„ฐํ™” ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ
// JSON.parse()๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ์ฒด ๋ฐ์ดํ„ฐํ™” ์‹œ์ผœ์ค€๋‹ค
console.log(JSON.parse(localStorage.getItem('user')))
 
console.log('---------------------------------------------------')
 
// ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ์ˆ˜์ •
 
// 1. ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ ์ˆ˜์ •ํ•œ ํ›„ ๊ธฐ์กด์˜ ํ‚ค์— ๋ฎ์–ด์“ฐ๊ธฐ ํ•œ๋‹ค
const temp = localStorage.getItem('user')
const obj_temp = JSON.parse(temp)
obj_temp.age = 22
console.log(obj_temp)
localStorage.setItem('user', JSON.stringify(obj_temp))
 
localStorage.removeItem('user')
// 2. Lowdb (lodash ํŒจํ‚ค์ง€ ์‚ฌ์šฉ)
 
 
console.log('---------------------------------------------------')
function fetchMovies() {
  axios
  .get('https://www.omdbapi.com/?apikey=7035c60c&amp;s=frozen')
  .then(res => {
    console.log(res)
    const h1El = document.querySelector('h1')
    const imgEl = document.querySelector('img')
    h1El.textContent = res.data.Search[0].Title
    imgEl.src = res.data.Search[0].Poster
  })
}
fetchMovies()
 
 
cs
728x90

'๊ฐœ๋ฐœ > HTML, CSS, JS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์ •์  ํŒŒ์ผ ์—ฐ๊ฒฐ  (0) 2023.02.13
๋ฒˆ๋“ค๋Ÿฌ ๊ฐœ์š”  (0) 2023.02.13
Type annotation  (0) 2023.02.04
BEM  (0) 2023.01.13
๋ฉ”์†Œ๋“œ ์ฒด์ด๋‹(Method Chaining)  (0) 2023.01.12