πŸ“ λ°°μ—΄

πŸ’‘ 객체 λ°°μ—΄

const actors = [{ name: '김고은' }, { name: 'κ³ μœ€μ •' }];

console.log(actors);     // Array[Object, Object]
console.log(actors[0]);  // Object {name:"김고은"}
console.log(actors[1]);  // Object {name:"κ³ μœ€μ •"}

πŸ’‘ push : 배열에 ν•­λͺ© μΆ”κ°€

actors.push({ name: 'μ‹ μ„Έκ²½' });

πŸ’‘ length : λ°°μ—΄μ˜ 크기

πŸ“ 반볡문

πŸ’‘ for...of

πŸ’¬ 배열에 κ΄€ν•œ λ°˜λ³΅λ¬Έμ„ 돌리기 μœ„ν•΄μ„œ λ§Œλ“€μ–΄μ§„ 반볡문

⚠ 잘 μ•ˆμ”€
let numbers = [10, 20, 30, 40, 50];
for (let number of numbers) {
  console.log(number);  // 10     20     30     40      50
}

πŸ’‘ for...in

const singer = {
  name: 'λ°•μ±„μ˜',
  group: 'BLACKPINK',
  age: 24
};

//Object ν•¨μˆ˜ μ‚¬μš©
console.log(Object.entries(singer)); // [["name", "λ°•μ±„μ˜"], ["group", "BLACKPINK"], ["age" , 24]]
console.log(Object.keys(doggy));     // ["name", "group", "age" ]
console.log(Object.values(doggy));   // ["λ°•μ±„μ˜", "BLACKPINK", 24]
Object.entries: [[ν‚€, κ°’], [ν‚€, κ°’]] ν˜•νƒœμ˜ λ°°μ—΄λ‘œ λ³€ν™˜
Object.keys: [ν‚€, ν‚€, ν‚€] ν˜•νƒœμ˜ λ°°μ—΄λ‘œ λ³€ν™˜
Object.values: [κ°’, κ°’, κ°’] ν˜•νƒœμ˜ λ°°μ—΄λ‘œ λ³€ν™˜
// for...in μ‚¬μš©
for (let key in singer) {
  console.log(`${key}: ${singer[key]}`);
  // name: λ°•μ±„μ˜
  // group: BLACKPINK
  // age: 24
}

πŸ“ λ°°μ—΄ λ‚΄μž₯ν•¨μˆ˜

πŸ’‘ forEach

πŸ’¬ νŒŒλΌλ―Έν„°λŠ” 각 μ›μ†Œμ— λŒ€ν•˜μ—¬ μ²˜λ¦¬ν•˜κ³  싢은 μ½”λ“œλ₯Ό ν•¨μˆ˜λ‘œ μž…λ ₯

πŸ’¬ 이 ν•¨μˆ˜μ˜ νŒŒλΌλ―Έν„°λŠ” 각 μ›μ†Œλ₯Ό κ°€λ₯΄ν‚΄

const actors = ['김고은', 'κ³ μœ€μ •', 'μ‹ μ„Έκ²½', 'ν•œμ†Œν¬'];

// for 반볡문 μ‚¬μš©
for (let i = 0; i < actors.length; i++) {
  console.log(actors[i]);
}

// forEach μ‚¬μš©
actors.forEach(actor => {
  console.log(actor);
});

// κ²°κ³Ό 동일
μœ„ μ½”λ“œμ˜ νŒŒλΌλ―Έν„° actorλŠ” 각 μ›μ†Œλ₯Ό 가리킴

βž• μ½œλ°±ν•¨μˆ˜ : ν•¨μˆ˜ν˜•νƒœμ˜ νŒŒλΌλ―Έν„°λ₯Ό μ „λ‹¬ν•˜λŠ” 것

πŸ’‘ map

πŸ’¬ λ°°μ—΄ μ•ˆμ˜ 각 μ›μ†Œλ₯Ό λ³€ν™˜ν•  λ•Œ μ‚¬μš©, 이 κ³Όμ •μ—μ„œ μƒˆλ‘œμš΄ λ°°μ—΄ 생성

πŸ’¬ νŒŒλΌλ―Έν„°λŠ” λ³€ν™”λ₯Ό μ£ΌλŠ” ν•¨μˆ˜(λ³€ν™”ν•¨μˆ˜)λ₯Ό 전달

const array = [1, 2, 3, 4, 5, 6, 7, 8];

// μ œκ³±ν•΄μ„œ μƒˆλ‘œμš΄ λ°°μ—΄ 생성
const squared = [];   // λ³€ν™”ν•¨μˆ˜

// for 반볡문 μ‚¬μš©
for (let i = 0; i < array.length; i++) {
  squared.push(array[i] * array[i]); 
}

// forEach μ‚¬μš©
array.forEach(n => {
  squared.push(n * n);
});

// map μ‚¬μš© 1
const square = n => n * n;          // λ³€ν™”ν•¨μˆ˜ 이름 μ„ μ–Έ
const squared = array.map(square);  // λ³€ν™”ν•¨μˆ˜ 전달

// map μ‚¬μš© 2
const squared = array.map(n => n * n); // λ³€ν™”ν•¨μˆ˜ 이름 μ„ μ–Έ X

// κ²°κ³Ό 동일
console.log(squared); // [1, 4, 9, 16, 25, 36, 49, 64];

πŸ’‘ indexOf

πŸ’¬ μ›ν•˜λŠ” ν•­λͺ©μ΄ λͺ‡λ²ˆμ§Έ μ›μ†ŒμΈμ§€ μ°Ύμ•„μ£ΌλŠ” ν•¨μˆ˜

⚠ 값이 객체 λ˜λŠ” 배열이라면 찾을 수 μ—†μŒ
const actors = ['김고은', 'κ³ μœ€μ •', 'μ‹ μ„Έκ²½', 'ν•œμ†Œν¬'];
const index = actors.indexOf('μ‹ μ„Έκ²½');
console.log(index);  // 2

πŸ’‘ findIndex

πŸ’¬ λ°°μ—΄ μ•ˆμ— μžˆλŠ” κ°’ 쀑 μ°Ύκ³ μžν•˜λŠ” ν•­λͺ©μ΄ λͺ‡λ²ˆμ§Έ μ›μ†ŒμΈμ§€ μ•Œμ•„λ‚΄λŠ” ν•¨μˆ˜

const todos = [
  {
    id: 1,
    text: 'λ³€μˆ˜',
    done: true
  },
  {
    id: 2,
    text: 'ν•¨μˆ˜',
    done: true
  },
  {
    id: 3,
    text: '반볡문',
    done: true
  },
  {
    id: 4,
    text: 'λ°°μ—΄ λ‚΄μž₯ν•¨μˆ˜',
    done: false
  }
];

const index = todos.findIndex(todo => todo.id === 3);
console.log(index); // 2

πŸ’‘ find

πŸ’¬ λ°°μ—΄ μ•ˆμ— μžˆλŠ” κ°’ 쀑 μ°Ύμ•„λ‚Έ κ°’ 자체λ₯Ό λ°˜ν™˜

...

const todo = todos.find(todo => todo.id === 3);
console.log(todo);
// {id: 3, text: "반볡문", done: true}

πŸ’‘ filter

πŸ’¬ λ°°μ—΄μ—μ„œ νŠΉμ • 쑰건을 λ§Œμ‘±ν•˜λŠ” κ°’λ“€λ§Œ λ”°λ‘œ μΆ”μΆœν•˜μ—¬ μƒˆλ‘œμš΄ λ°°μ—΄ 생성

πŸ’¬ νŒŒλΌλ―Έν„°λŠ” 쑰건을 κ²€μ‚¬ν•˜λŠ” ν•¨μˆ˜λ₯Ό λ„£μŒ

πŸ’¬ ν•¨μˆ˜μ˜ νŒŒλΌλ―Έν„°λ‘œ 각 μ›μ†Œμ˜ 값을 λ°›μ•„μ˜΄

...

const tasksNotDone = todos.filter(todo => todo.done === false);
// const tasksNotDone = todos.filter(todo => !todo.done);
console.log(tasksNotDone);

// [
     {
      id: 4,
      text: 'λ°°μ—΄ λ‚΄μž₯ ν•¨μˆ˜',
      done: false
    }
   ];

πŸ’‘ splice

πŸ’¬ λ°°μ—΄μ—μ„œ νŠΉμ • ν•­λͺ©μ„ μ œκ±°ν•  λ•Œ μ‚¬μš©

πŸ’¬ 첫번째 νŒŒλΌλ―Έν„° : μ–΄λ–€ μΈλ±μŠ€λΆ€ν„° μ§€μšΈ 지, λ‘λ²ˆμ§Έ νŒŒλΌλ―Έν„° : κ·Έ μΈλ±μŠ€λΆ€ν„° λͺ‡ 개λ₯Ό μ§€μšΈ 지

const numbers = [10, 20, 30, 40];
const index = numbers.indexOf(30);
numbers.splice(index, 1);
console.log(numbers);  // [10, 20, 40]

πŸ’‘ slice

πŸ’¬ 배열을 μž˜λΌλ‚Ό λ•Œ μ‚¬μš©ν•˜μ§€λ§Œ, 기쑴의 배열을 건듀이지 μ•ŠμŒ

πŸ’¬ 첫번째 νŒŒλΌλ―Έν„° : μ–΄λ””μ„œλΆ€ν„° 자λ₯Όμ§€, λ‘λ²ˆμ§Έ νŒŒλΌλ―Έν„° : μ–΄λ””κΉŒμ§€ 자λ₯Ό 지

⚠ λ‘λ²ˆμ§Έ νŒŒλΌλ―Έν„°λŠ” 포함 X
const numbers = [10, 20, 30, 40];
const sliced = numbers.slice(0, 2);  // 0λΆ€ν„° μ‹œμž‘ν•΄μ„œ 2μ „κΉŒμ§€

console.log(sliced);   // [10, 20]
console.log(numbers);  // [10, 20, 30, 40]

πŸ’‘ shift 와 pop

πŸ’¬ shift : 첫번째 μ›μ†Œλ₯Ό λ°°μ—΄μ—μ„œ μΆ”μΆœ

⚠ μΆ”μΆœν•˜λŠ” κ³Όμ •μ—μ„œ λ°°μ—΄μ—μ„œ ν•΄λ‹Ή μ›μ†ŒλŠ” 사라짐
const numbers = [10, 20, 30, 40];
const value = numbers.shift();
console.log(value);    // 10
console.log(numbers);  // [20, 30, 40]

πŸ’¬ pop : 맨 λ§ˆμ§€λ§‰ ν•­λͺ©μ„ λ°°μ—΄μ—μ„œ μΆ”μΆœ

const numbers = [10, 20, 30, 40];
const value = numbers.pop();
console.log(value);    // 40
console.log(numbers);  // [10, 20, 30]

πŸ’‘ unshift

πŸ’¬ λ°°μ—΄μ˜ 맨 μ•žμ— μƒˆ μ›μ†Œλ₯Ό μΆ”κ°€

const numbers = [10, 20, 30, 40];
numbers.unshift(5);
console.log(numbers);  // [5, 10, 20, 30, 40]

πŸ’‘ concat

πŸ’¬ μ—¬λŸ¬ 개의 배열을 ν•˜λ‚˜μ˜ λ°°μ—΄λ‘œ ν•©μΉ¨

⚠ arr1 κ³Ό arr2 에 λ³€ν™”λ₯Ό 주지 μ•ŠμŒ
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const concated = arr1.concat(arr2);

console.log(concated);  // [1, 2, 3, 4, 5, 6]

πŸ’‘ join

πŸ’¬ λ°°μ—΄ μ•ˆμ˜ 값듀을 λ¬Έμžμ—΄ ν˜•νƒœλ‘œ ν•©μΉ¨

const array = [1, 2, 3, 4, 5];
console.log(array.join());      // 1,2,3,4,5
console.log(array.join(' '));   // 1 2 3 4 5
console.log(array.join(', '));  // 1, 2, 3, 4, 5

πŸ’‘ reduce

πŸ’¬ λ°°μ—΄ μ•ˆμ˜ 값듀을 λ¬Έμžμ—΄ ν˜•νƒœλ‘œ ν•©μΉ¨

const numbers = [1, 2, 3, 4, 5];

// forEach μ‚¬μš©
let sum = 0;
numbers.forEach(n => {
  sum += n;
});

// reduce μ‚¬μš©
const numbers = [1, 2, 3, 4, 5];
let sum = array.reduce((accumulator, current) => accumulator + current, 0);

console.log(sum);
첫번째 νŒŒλΌλ―Έν„° : accumulator 와 currentλ₯Ό 가져와 κ²°κ³Ό λ°˜ν™˜(μ½œλ°±ν•¨μˆ˜), λ‘λ²ˆμ§Έ νŒŒλΌλ―Έν„° : reduce ν•¨μˆ˜μ—μ„œ μ‚¬μš©ν•  μ΄ˆκΉƒκ°’
accumulator : λˆ„μ λœ κ°’
const numbers = [1, 2, 3, 4, 5];

let sum = numbers.reduce((accumulator, current) => {
  console.log({ accumulator, current });
  // Object {accumulator: 0, current: 1}   // μ΄ˆκΉƒκ°’ 0이기 λ•Œλ¬Έμ— accumulator: 0
  // Object {accumulator: 1, current: 2}   // accumulator: 0 + 1 = 1
  // Object {accumulator: 3, current: 3}   // accumulator: 1 + 2 = 3
  // Object {accumulator: 6, current: 4}   
  // Object {accumulator: 10, current: 5}  
  return accumulator + current;
}, 0);

console.log(sum);   // 15

let average = numbers.reduce((accumulator, current, index, array) => {
  if (index === array.length - 1) {
    return (accumulator + current) / array.length;
  }
  return accumulator + current;
}, 0);

console.log(average);   // 3

βž• index : ν˜„μž¬ μ²˜λ¦¬ν•˜κ³  μžˆλŠ” ν•­λͺ©μ΄ λͺ‡λ²ˆ 째인지

βž• array : ν˜„μž¬ μ²˜λ¦¬ν•˜κ³  μžˆλŠ” λ°°μ—΄ μžμ‹ μ„ 의미

πŸ“ ν”„λ‘œν† νƒ€μž…κ³Ό 클래슀

πŸ’‘ 객체 μƒμ„±μž

πŸ’¬ ν•¨μˆ˜λ₯Ό 톡해 μƒˆλ‘œμš΄ 객체λ₯Ό λ§Œλ“€κ³ , μ•ˆμ— λ„£κ³  싢은 κ°’ λ˜λŠ” ν•¨μˆ˜λ“€μ„ κ΅¬ν˜„ ν•  수 μžˆλ„λ‘ 함

πŸ’¬ new ν‚€μ›Œλ“œ : μƒˆλ‘œμš΄ 객체 생성 μ‹œ μ‚¬μš©

⚠ 보톡 ν•¨μˆ˜μ˜ 이름을 λŒ€λ¬Έμžλ‘œ μ‹œμž‘
function Animal(type, name, sound) {
  this.type = type;
  this.name = name;
  this.sound = sound;
  this.say = function() {
    console.log(this.sound);
  };
}

const dog = new Animal('개', '산체', '멍멍');
const cat = new Animal('고양이', '벌이', 'μ•Όμ˜Ή');

dog.say();  // 멍멍
cat.say();  // μ•Όμ˜Ή

πŸ’‘ ν”„λ‘œν† νƒ€μž…

πŸ’¬ 같은 객체 μƒμ„±μž ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 경우, νŠΉμ • ν•¨μˆ˜ λ˜λŠ” 값을 μž¬μ‚¬μš© ν•  수 μžˆλ„λ‘ 함.

πŸ’¬ .prototype.[μ›ν•˜λŠ”ν‚€] = μ½”λ“œ

function Animal(type, name, sound) {
  this.type = type;
  this.name = name;
  this.sound = sound;
}

Animal.prototype.say = function() {  // ν”„λ‘œν† νƒ€μž…
  console.log(this.sound);
};
Animal.prototype.sharedValue = 1;    // ν”„λ‘œν† νƒ€μž…

const dog = new Animal('개', '산체', '멍멍');
const cat = new Animal('고양이', '벌', 'μ•Όμ˜Ή');

dog.say();  // 멍멍
cat.say();  // μ•Όμ˜Ή

console.log(dog.sharedValue);  // 1
console.log(cat.sharedValue);  // 1

πŸ’‘ 객체 μƒμ„±μž 상속

πŸ’¬ 객체 μƒμ„±μžλ“€ μ‚¬μ΄μ—μ„œ ν•¨μˆ˜μ˜ κΈ°λŠ₯을 μž¬μ‚¬μš© μ‹œ

πŸ’¬ 첫번째 인자 : this, κ·Έ 이후 μΈμžλ“€ : 객체 μƒμ„±μž ν•¨μˆ˜μ—μ„œ ν•„μš”λ‘œ ν•˜λŠ” νŒŒλΌλ―Έν„°λ“€

Animal.prototype.say = function() {
  console.log(this.sound);
};
Animal.prototype.sharedValue = 1;

function Dog(name, sound) {
  Animal.call(this, '개', name, sound);     // Animal.call 호좜 
}
Dog.prototype = Animal.prototype;  // 상속

function Cat(name, sound) {
  Animal.call(this, '고양이', name, sound);  // Animal.call 호좜 
}
Cat.prototype = Animal.prototype;  // 상속

const dog = new Dog('산체', '멍멍');
const cat = new Cat('벌', 'μ•Όμ˜Ή');

dog.say();
cat.say();
prototype을 κ³΅μœ ν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— 상속받은 객체 μƒμ„±μž ν•¨μˆ˜λ₯Ό λ§Œλ“€κ³  λ‚˜μ„œ prototype값을 Animal.prototype으둜 μ„€μ •

πŸ’‘ 클래슀

πŸ’¬ μƒμ„±μž 생성 μ‹œ, constructor μ‚¬μš©

πŸ’¬ λ©”μ„œλ“œ : 클래슀 λ‚΄λΆ€μ˜ ν•¨μˆ˜, μžλ™μœΌλ‘œ ν”„λ‘œν† νƒ€μž…μœΌλ‘œ 등둝

class Animal {
  constructor(type, name, sound) {  // constructor μ‚¬μš©
    this.type = type;
    this.name = name;
    this.sound = sound;
  }
  say() {   // λ©”μ„œλ“œ
    console.log(this.sound);
  }
}

const dog = new Animal('개', '산체', '멍멍');
const cat = new Animal('고양이', '벌', 'μ•Όμ˜Ή');

dog.say();   // 멍멍
cat.say();   // μ•Όμ˜Ή

πŸ’¬ 상속 : extends ν‚€μ›Œλ“œ μ‚¬μš©, constructorμ—μ„œ μ‚¬μš©ν•˜λŠ” super()ν•¨μˆ˜κ°€ 상속받은 클래슀의 μƒμ„±μžλ₯Ό κ°€λ₯΄ν‚΄.

class Animal {
  constructor(type, name, sound) {
    this.type = type;
    this.name = name;
    this.sound = sound;
  }
  say() {
    console.log(this.sound); 
  }
}

class Dog extends Animal {     // 상속, extends ν‚€μ›Œλ“œ μ‚¬μš© 
  constructor(name, sound) {
    super('개', name, sound);  // super() ν•¨μˆ˜ μ‚¬μš©
  }
}

class Cat extends Animal {
  constructor(name, sound) {
    super('고양이', name, sound);
  }
}

const dog = new Dog('산체', '멍멍');
const dog2 = new Dog('죽은체', 'μ™ˆμ™ˆ');
const cat = new Cat('벌', 'μ•Όμ˜Ή');
const cat2 = new Cat('λ‚˜λΉ„', 'λƒμ˜Ή');

dog.say();   // 멍멍
dog2.say();  // μ™ˆμ™ˆ
cat.say();   // μ•Όμ˜Ή
cat2.say();  // λƒμ˜Ή

Reference

λ²¨λ‘œνΌνŠΈμ™€ ν•¨κ»˜ν•˜λŠ” λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ

profile
κ³΅λΆ€ν•œ κ±° μ˜¬λ €μš” :)

0개의 λŒ“κΈ€