20201015 TIL
// for..of ๋ฐฐ์ด์ ๋ง๋ค ๋ ์ฃผ๋ก ์ฌ์ฉ
const numbers = [10, 20, 30, 40, 50];
for (let number of numbers){
console.log(number);
}
for (let i = 0; i < numbers.length; i++){
console.log(numbers[i]);
}
const doggy = {
name : '๋ฉ๋ฉ์ด',
sound: '๋ฉ๋ฉ',
age : 2
};
console.log(Object.keys(doggy));
console.log(Object.values(doggy)); // ๊ฐ์ฒด์ value๊ฐ๋ค์ ๋ณด์ฌ์ค
console.log(Object.keys(doggy)); // ๊ฐ์ฒด์ key๊ฐ๋ค์ ๋ณด์ฌ์ค.
for (let key in doggy){
console.log(key); // key๊ฐ๋ค์ด ๋ค ๋ํ๋์ค.
}
// key์ value๋ฅผ ํ๋ฒ์ ๋ณด๋ ค๋ฉด?
// Template Literal
for(let key in doggy){
console.log(`${key} : ${doggy[key]}`);
}
const superheroes = ['์์ด์ธ๋งจ', '์บกํด ์๋ฉ๋ฆฌ์นด', 'ํ ๋ฅด', '๋ฅํฐ ์คํธ๋ ์ธ์ง'];
for (let i = 0; i < superheroes.length; i++){
console.log(superheroes[i]);
}
function print(hero){
console.log(hero);
}
superheroes.forEach(print)
// ์ด๋ ๊ฒ ์ค์ฌ์ ์ฐ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
superheroes.forEach(function(hero){
console.log(hero);
})
// ์ด๋ ๊ฒ๋ ๊ฐ๋ฅ.
superheroes.forEach(hero => {
console.log(hero);
})
// map ํจ์
// ๋ฐฐ์ด ์์ ์์๋ฅผ ๋ณํํ ๋ ์ฌ์ฉํ๋ค.
// ๊ฐ๋ น ์ซ์๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ด ์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
const array = [1, 2, 3, 4, 5, 6, 7, 8];
// --------------------------------------------------------------------
// ๋ฐฐ์ด ์์ ๋ชจ๋ ์ซ์๋ฅผ ์ ๊ณฑํด์ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด?
// const squared = [];
// ๋ฐฉ๋ฒ 1
// for (let i = 0; i < array.length; i++){
// squared.push(array[i] * array[i]);
// }
// console.log(squared);
// ๋ฐฉ๋ฒ 2
// forEach๋ก๋ ๊ตฌํ ๊ฐ๋ฅ.
// array.forEach((n) => {
// squared.push(n * n);
// });
// console.log(squared);
// --------------------------------------------------------------------
// ๋ฐฉ๋ฒ 3
// map์ผ๋ก ๊ตฌํ
const square = (n) => n * n;
const squared = array.map(square);
console.log(squared);
// ์ด๋ ๊ฒ๋ ์ค์ผ ์ ์๋ค.
const squared2 = array.map((n) => n * n);
console.log(squared2);
// --------------------------------------------------------------------
// ๊ฐ์ฒด ๋ฐฐ์ด ์ ์ธ
const items = [
{
id: 1,
text: 'hello'
},
{
id: 2,
text: 'bye'
}
];
// ์ด ๊ฐ์ฒด ๋ฐฐ์ด๋ค์ text๋ก๋ง ์ด๋ค์ง ๋ฌธ์์ด ๋ฐฐ์ด๋ก ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด?
const texts = items.map((item) => item.text);
console.log(texts);
// --------------------------------------------------------------------
// ์ํ๋ ํญ๋ชฉ์ด ์ด๋์๋์ง ์์๋ณด๋ ํจ์
// indexOf
const superheroes = ['์์ด์ธ๋งจ', '์บกํด ์๋ฉ๋ฆฌ์นด', 'ํ ๋ฅด', '๋ฅํฐ ์คํธ๋ ์ธ์ง'];
const index = superheroes.indexOf('ํ ๋ฅด');
console.log(index);
// ๋ค๋ฅธ ์์ (๊ฐ์ฒด๋ก ์ด๋ค์ง ๋ฐฐ์ด์ผ ๊ฒฝ์ฐ)
const todos = [
{
id: 1,
text: '์๋ฐ์คํฌ๋ฆฝํธ ์
๋ฌธ',
done: true
},
{
id: 2,
text: 'ํจ์ ๋ฐฐ์ฐ๊ธฐ',
done: true
},
{
id: 3,
text: '๋ฐฐ์ด ๋ด์ฅํจ์ ๋ฐฐ์ฐ๊ธฐ',
done: false
}
];
// ์ด ๋ฐฐ์ด์์ id๊ฐ 3์ธ ๊ฒ์ ์ฐพ๊ณ ์ถ๋ค๋ฉด?
const index2 = todos.indexOf(3);
console.log(index2); // -1์ ์ผ์นํ๋ ๊ฒ์ด ์์์ ๋ํ๋ธ๋ค.
// ๋ฐ๋ผ์ id๊ฐ์ด 3์ธ๊ฒ์ ์ฐพ๊ณ ์ถ๋ค๋ฉด findIndex()๋ฅผ ์จ์ผ ํ๋ค.
const index3 = todos.findIndex((todo) => todo.id === 3);
console.log(index3);
// find()ํจ์๋ ์กด์ฌํ๋ค.
// ํด๋น ์์๋ฅผ ๊ทธ๋ฅ ๊ฐ์ ธ์จ๋ค.
const todo = todos.find((todo) => todo.id === 3);
console.log(todo);
// ์กฐ๊ฑด์ ๋ฃ์ ์๋ ์๋ค.
const todo2 = todos.find((todo) => todo.done === false);
console.log(todo2);
// indexOf, find, findIndex๋ ๊ฐ์ฅ ์ฒซ๋ฒ์งธ๋ก ์ฐพ์ ํญ๋ชฉ๋ง ์๋ ค์ค๋ค.
// indexOf : ํน์ ๊ฐ์ด๋ ์ผ์นํ๋ ๊ฒ์ ์ฐพ์ ๋
// findIndex : findIndex๋ด๋ถ์ ํจ์๋ฅผ ๋ฃ์ด ํน์ ๊ฐ์ ์กฐ๊ฑด์ผ๋ก ์ฐพ์์ ๋ช๋ฒ์งธ์ธ์ง ์ฐพ์์ค
// find : find๋ ์์์ฒ๋ผ ์ฐพ์ ๊ฐ ์์ฒด๋ฅผ ๋ฐํํ๋ค.
// filter
// ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์๋ค์ ์ฐพ์์ ๊ทธ ์์๋ค์ ๊ฐ์ง๊ณ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋๋ ๊ฒ.
const todos = [
{
id: 1,
text: '์๋ฐ์คํฌ๋ฆฝํธ ์
๋ฌธ',
done: true
},
{
id: 2,
text: 'ํจ์ ๋ฐฐ์ฐ๊ธฐ',
done: true
},
{
id: 3,
text: '๋ฐฐ์ด ๋ด์ฅํจ์ ๋ฐฐ์ฐ๊ธฐ',
done: false
}
];
// ๊ธฐ์กด์ ๋ฐฐ์ด์ ๊ฑด๋๋ฆฌ์ง ์๊ณ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค์ด๋ธ๋ค.
// const tasksNotDone = todos.filter((todo) => todo.done === false);
const tasksNotDone = todos.filter((todo) => !todo.done); // done๊ฐ์ด false์ธ๊ฒ ๋ํ๋จ.
console.log(tasksNotDone);
// --------------------------------------------------------------------
// splice
// ๋ฐฐ์ด์์ ํน์ ํญ๋ชฉ์ ์ ๊ฑฐํ ๋ ์ฌ์ฉํ๋๋ฐ
// ์ ๊ฑฐ ๊ณผ์ ์์ ํด๋น ์์๊ฐ ๋ช๋ฒ์งธ์ธ์ง ๋ช
์ํด์ฃผ์ด์ผ ํ๋ค.
const numbers = [10, 20, 30, 40];
const index = numbers.indexOf(30);
console.log(index);
// ์ด๋, splice()์ ๊ฒฐ๊ณผ๊ฐ์ ์ ๊ฑฐํด๋ธ ๋ฐฐ์ด๋ค์ ๋ํ๋ธ๋ค.
const spliced = numbers.splice(index, 2); // index๋ถํฐ ๋ช๊ฐ๋ฅผ ์ง์ฐ๊ฒ ๋ค. 2์ด๋ผ ํ๋ฉด ๋๊ฐ๋ฅผ ์ง์ฐ๊ฒ ๋ค๋ ๊ฒ.
console.log(numbers);
console.log(spliced);
// --------------------------------------------------------------------
console.log('-----------------------------------------');
// slice
// splice๋ ๋ฐฐ์ด์ ์๋ผ๋ผ ๋ ์ฌ์ฉํ๋ค.
// ๋ค๋ง slice๋ ๊ธฐ์กด์ ๋ฐฐ์ด์ ๊ฑด๋๋ฆฌ์ง ์์ผ๋ฉฐ ํจ๋ฌ๋ฏธํฐ์ ๋ฃ๋ ๊ฐ๋ ๋ค๋ฅด๋ค.
const numbers2 = [10, 20, 30, 40];
const sliced = numbers2.slice(0, 2); // ๋ช๋ฒ ์ธ๋ฑ์ค๋ถํฐ ๋ช๋ฒ ์ธ๋ฑ์ค ์ ๊น์ง ์๋ฅผ์ง๋ฅผ ์๋ฏธํ๋ค.
console.log(sliced);
console.log(numbers2);
- ํ์ํ๊ณ ๋ป์ด์ 16์ผ์ ๊ธ์ ์ฌ๋ฆฌ์ง ๋ชปํ๋ค.. ๊ทธ๋๋ ๋ํ๋์ด ์ ๋ง ๋ง์๋ ๊ณ ๊ธฐ๋ฅผ ์ฌ์ฃผ์ จ๋คใ ใ
20201016 TIL
// shift, pop, unshift, push
// shift
// ์ฒซ๋ฒ์งธ ์์๋ฅผ ๋ฐฐ์ด์์ ์ถ์ถํด์ค๋ค.
const numbers = [10, 20, 30, 40];
const value = numbers.shift();
console.log(value);
// shift๋ ๊ธฐ์กด์ ๋ฐฐ์ด์ ์์ ํ๊ฒ ๋๋ค. ๊ทธ๋์ ๊ธฐ์กด ์ฒซ๋ฒ์งธ ์์์ธ 10์ด ์ฌ๋ผ์ง๊ฒ ๋๋ค.
console.log(numbers);
// pop
// ๋ง์ง๋ง ์์๋ฅผ ๋ฐฐ์ด์์ ์ถ์ถํด์ค๋ค.
const numbers2 = [10, 20, 30, 40];
const value2 = numbers2.pop();
console.log(value2);
console.log(numbers2);
// unshift
const numbers3 = [10, 20, 30, 40];
numbers3.unshift(5);
// numbers3 ๋งจ ์๋ถ๋ถ์ ์์๊ฐ ์ถ๊ฐ๋๋ค.
console.log(numbers3);
// push(), pop() & unshift(), shift()๊ฐ ์ง์ ์ด๋ฃฌ๋ค.
// ๊ฐ๊ฐ ์ฒซ๋ฒ์งธ ์์์ ๋ง์ง๋ง ์์์ ์ํฅ์ ๋ฏธ์น๋ค.
// ๋ท๋ค ๋ฐฐ์ด์ ์ง์ ์ ์ผ๋ก ์ํฅ์ ๋ฏธ์น๋ค.
// --------------------------------------------------
// concat()
// ์ฌ๋ฌ ๋ฐฐ์ด์ ํ๋์ ๋ฐฐ์ด๋ก ํฉ์ณ์ค๋ค.
// ๊ทผ๋ฐ concat์ ๊ธฐ์กด์ ๋ฐฐ์ด์ ๊ฑด๋๋ฆฌ์ง ์๋๋ค.
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const concated = arr1.concat(arr2);
console.log(concated);
// es6์ spread์ฐ์ฐ์
const concated2 = [...arr1, ...arr2];
console.log(concated2);
// join()
// ๋ฐฐ์ด ์์ ์๋ ๊ฐ๋ค์ ๋ฌธ์์ด ํํ๋ก ํฉ์ณ์ค ๋ ์ฌ์ฉํ๋ค.
const array = [1, 2, 3, 4, 5];
console.log(array.join()); // ํด๋น ๋ฐฐ์ด์ ์ผํ ์ฌ์ด์ฌ์ด์ ๋ฃ์ด์ ํ๋์ ๋ฌธ์์ด๋ก ๋ง๋ค์ด์ค.
// ํจ๋ฌ๋ฏธํฐ ์์๋ separator์.
console.log(array.join(" --- "));
// reduce()
// ์ฃผ๋ก ๋ฐฐ์ด์ด ์ฃผ์ด์ก์ ๋ ๋ฐฐ์ด ์์ ๋ชจ๋ ๊ฐ๋ค์ ์ฌ์ฉํ์ฌ ์ด๋ค ๊ฐ์ ์ฐ์ฐํ ๋ ์ฌ์ฉํ๋ค.
const numbers = [1, 2, 3, 4, 5];
// ๋ชจ๋ ๋ฐฐ์ด์ ์์๋ค์ ํฉํด์ ์ดํฉ์ ๊ตฌํด๋ณด์.
// ๋ฐฉ๋ฒ 1
let sum = 0;
numbers.forEach(n => {
sum += n;
})
console.log(sum);
// ๋ฐฉ๋ฒ 2 (reduceํจ์ ์ฌ์ฉ)
// accumulator ๋ ๋์ ๋ ๊ฐ์ ์๋ฏธํจ.
// current๋ ์ฒ์์ 1์ด ๋ค์ด๊ฐ๊ณ ๊ทธ ๋ค์์ ์ฐจ์ฐจ ๋ค์ ์์๊ฐ ๋ค์ด๊ฐ๋ค.
// ์ฒซ๋ฒ์งธ ํจ๋ฌ๋ฏธํฐ์๋ ํจ์๊ฐ ๋ค์ด๊ฐ๋ ๊ฒ.
const sum2 = numbers.reduce((accumulator, current) => accumulator + current, 0);
console.log(sum2);
// index๋ reduce์์ ์ด ํจ์๊ฐ ๊ฐ ์์์ ๋ํ์ฌ ์คํ์ด ๋ ํ
๋ฐ
// ์ด๋ index๋ ๊ฐ ์์๊ฐ ๋ช๋ฒ์งธ ์์ดํ
์ธ์ง ์๋ ค์ค๋ค. ๊ทธ๋ผ 0, 1, 2, 3, 4๊น์ง ์คํ๋ ๊ฒ.
// array๋ ํจ์๋ฅผ ์คํํ๊ณ ์๋ ์๊ธฐ ์์ ์ ์๋ฏธํ๋ค.
const avg = numbers.reduce((accumulator, current, index, array) => {
if(index === array.length - 1){
// ํ์ฌ ์ฒ๋ฆฌํ๊ณ ์๋ ๋ฐฐ์ด ์์๊ฐ ๋งจ ๋ง์ง๋ง๊บผ๋ผ๋ฉด ... (-1์ ์ธ๋ฑ์ค๊ฐ 0๋ถํฐ ์์ํ๊ธฐ ๋๋ฌธ)
// ๊ทธ๋์ ์ธ๋ฑ์ค๊ฐ 4๋ผ๋ฉด..(๋ง์ง๋ง ์์๋ผ๋ฉด)
return (accumulator + current) / array.length;
}
return accumulator + current;
}, 0);
console.log(avg);
// reduce()์ ๋ค๋ฅธ ์์
const alphabets = ['a', 'a', 'a', 'b', 'c', 'c', 'd', 'e'];
// ๊ฐ ์ํ๋ฒณ์ด ๋ช๊ฐ์ฉ ์๋์ง ์ธ์ ๊ฐ์ฒด์ ๊ฒฐ๊ณผ๋ฅผ ๋ฃ์ด์ค ๊ฒ.
const counts = alphabets.reduce((acc, current) => {
// ์ฌ๊ธด ์ฝ๋๋ธ๋ญ์ด๋ค. ๋ฐ์ ๊ฐ์ฒด๋ก ์ด๊ธฐํ์์ผ์ค ๊ฒ๊ณผ ํท๊ฐ๋ฆฌ๋ฉด ์๋๋ค.
if (acc[current]){
// ๋ง์ฝ acc์ current๊ฐ ์กด์ฌํ๋ค๋ฉด?
acc[current] += 1;
} else {
acc[current] = 1;
}
return acc;
}, {}) // ๋น์ด์๋ ๊ฐ์ฒด๋ก acc๋ฅผ ์ด๊ธฐํํ์๋ค.
console.log(counts);
// ํ๋กํ ํ์
๊ณผ ํด๋์ค - ๊ฐ์ฒด ์์ฑ์
// ๊ฐ์ฒด ์์ฑ์๋ฅผ ๋ง๋ค ๋ ์ฃผ๋ก ๋๋ฌธ์๋ก ์์
function Animal(type, name, sound){
this.type = type;
this.name = name;
this.sound = sound;
// this.say = function(){
// console.log(this.sound);
// }
}
// ํ๋กํ ํ์
์ฌ์ฉํ๊ธฐ
Animal.prototype.say = function(){
console.log(this.sound);
}
const dog = new Animal('๊ฐ', '๋ฉ๋ฉ์ด', '๋ฉ๋ฉ');
const cat = new Animal('๊ณ ์์ด', '๋์น์ด', '๋์น');
dog.say();
cat.say();
// ๊ฐ์ ์ฌ์ฌ์ฉํ๊ณ ์ถ๋ค!
Animal.prototype.sharedValue = 1;
console.log(dog.sharedValue);
console.log(cat.sharedValue);
// ํ๋กํ ํ์
์ ์ญํ ์ด๋..
// ๊ฐ์ฒด ์์ฑ์๋ก ๋ญ๊ฐ ๋ง๋ค์์ ๋ ๊ทธ๊ฑธ ๋ง๋ ๊ฐ์ฒด๋ค๋ผ๋ฆฌ ๊ณต์ ํ ์ ์๋ ์ด๋ ํ ๊ฐ์ด๋ ํจ์๋ฅผ
// ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ฒด ์์ฑ์๋ก ๋ง๋ ํจ์์ ํ๋กํ ํ์
์ผ๋ก ์ค์ ์ ํ ์ ์๋ค.
// ํ๋กํ ํ์
๊ณผ ํด๋์ค - ๊ฐ์ฒด ์์ฑ์
// ๊ฐ์ฒด ์์ฑ์๋ฅผ ๋ง๋ค ๋ ์ฃผ๋ก ๋๋ฌธ์๋ก ์์
function Animal(type, name, sound){
this.type = type;
this.name = name;
this.sound = sound;
}
// ํ๋กํ ํ์
์ฌ์ฉํ๊ธฐ
Animal.prototype.say = function(){
console.log(this.sound);
}
// Animal์ด ๊ฐ์ง๋ ๊ฒ์ ์ฌ์ฌ์ฉํ์ฌ Dog, Cat ๊ฐ์ฒด์์ฑ์๋ฅผ ๋ง๋ค์ด ๋ณด์.
function Dog(name, sound){
Animal.call(this, '๊ฐ', name, sound);
}
function Cat(name, sound){
Animal.call(this, '๊ณ ์์ด', name, sound);
}
Dog.prototype = Animal.prototype;
Cat.prototype = Animal.prototype;
// Dog, Cat์ด๋ผ๋ ๊ฐ์ฒด์์ฑ์ ํจ์๋ฅผ ๋ง๋ค์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
const dog = new Dog('๋ฉ๋ฉ์ด', '๋ฉ๋ฉ');
const cat = new Cat('๋์น์ด', '๋์น');
dog.say();
cat.say();
์์ ์ฝ๋๋ฅผ class๋ฅผ ์ด์ฉํ์ฌ ๋ค์ ํด๋ณด์.
// JS์์๋ ํด๋์ค๋ผ๋ ๊ธฐ๋ฅ์ด ์์๋ค.
// ํด๋์ค๋ C++, C#, Java, PHP์๋ ์์ง๋ง... ๋น์ทํ ์์
์ ๊ตฌํํ๊ธฐ ์ํด ํญ์ ํจ์๋ฅผ ์จ์์๋ค.
// ๊ทผ๋ฐ es6์์ class๋ฌธ๋ฒ์ด ๋์
๋์๋๋ฐ, ๋ค๋ฅธ ์ธ์ด์์์ class์ ๋๊ฐ์ ๊ฒ์ ์๋์ง๋ง ์ฌํ ํจ์๋ก ๊ตฌํํด์จ ๊ฒ์
// ๊ฐ๋ตํ๊ณ ์๊ธฐ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋๋ก ํด์ค๋ค.
class Animal {
constructor(type, name, sound) {
this.type = type;
this.name = name;
this.sound = sound;
}
// say๋ผ๋ ํจ์๋ฅผ ํด๋์ค ๋ด๋ถ์ ๊ตฌํํ์๋๋ฐ ํจ์๋ฅผ ๋ง๋ค๋ฉด ์๋์ผ๋ก prototype์ผ๋ก ๋ฑ๋ก์ด ๋๋ค.
say() {
console.log(this.sound);
}
}
console.log(Animal.prototype.say); // ํจ์๊ฐ ์ค์ ๋์ด์์์ ํ์ธํ ์ ์๋ค.
const dog = new Animal('๊ฐ', '๋ฉ๋ฉ์ด', '๋ฉ๋ฉ');
const cat = new Animal('๊ณ ์์ด', '์ผ์น์ด', '์ผ์น');
dog.say();
cat.say();
// ๊ทธ๋ฆฌ๊ณ class๋ฅผ ์ฐ๋ฉด ์์ํ ๋ ๋์ฑ ์ฝ๊ฒ ํ ์ ์๋ค.
class Dog extends Animal {
// ๊ธฐ์กด animal์์ ์ฌ์ฉํ๋ constructor๋ฅผ ๋ฎ์ด ์ธ ๊ฒ.
// animal์ด ๊ฐ์ง๋ constructor๋ฅผ ๋จผ์ ํธ์ถํ๊ณ ๋์ ์์ ์ด ํด์ผํ ์ผ์ ์ฒ๋ฆฌํ ์ ์๋ค.
constructor(name, sound) {
super('๊ฐ', name, sound);
}
}
class Cat extends Animal{
constructor(name, sound){
super('๊ณ ์์ด', name, sound);
}
}
const dog2 = new Dog('๋ฉ๋ฉ์ด', '๋ฉ๋ฉ');
const cat2 = new Cat('๊ณ ์์ด', '์ผ์น');
const cat3 = new Cat('์ผ์ค์ค์ค์น์ด', '์ผ์ค์ค์ค์ค์น');
dog2.say();
cat2.say();
cat3.say();
์ธ๊ฐ๋ค์ผ๋ฉด์ ๋ฐ๋ผ ์น๊ฑธ ๊ทธ๋๋ก ์ฌ๋ ธ๋ค ใ
๋ง๋ค์ด๊ฐ๋ฉด์ ๊ณต๋ถํด์ผ ์ฌ๋ฐ์ง ๊ณต๋ถ๊ณต๋ถ๊ณต๋ถํ๋ ค๋ ์ฌ๋ฏธ๊ฐ ์๋ค...
๋ฐ์ํ
'๐ฅTIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
20201014 TIL (0) | 2020.10.14 |
---|---|
20201013 TIL (0) | 2020.10.13 |
20201012 TIL (0) | 2020.10.12 |
2020.03.18.TIL (0) | 2020.03.18 |
2020.03.16.TIL (0) | 2020.03.17 |