바뀔수 있는 값
let
#var 더 이상 사용안함
고정된 값
const
let a = 10;
const b = 20;
a = 20;
console.log(a);
console.log(b);
let num = 1; //숫자
let text = "hello"; //문자열(작은 따옴표나 큰 따옴표 사용)
let bool = true; //boolean형
null : 값이 없음을 의미
undefined : 값이 아직 설정되지 않음을 의미
let nu = null; //값 없음 의미
let un;
console.log(un); //undefined 출력됨
const name = "yeongsin";
console.log("안녕하세요" + name + "입니다.");
console.log(`안녕하세요 ${name}입니다.`);
실행 순서는 NOT->AND->OR
//NOT
const name = "Yeongsin";
console.log(name); //yeongsin
console.log(!name); //false
console.log(!0); //true
console.log(!1); //false
//0만 false
//if(0) => 실행안됨
//AND
console.log("aa" && "bb") //bb출력, 앞이 true이면 뒤 출력
console.log("aa" || "bb") //aa출력, 앞이 true이면 앞 출력
const aa = 10;
const bb = "10";
console.log(aa == bb); //true
console.log(aa === bb); //false
console.log(aa !== bb); //true
function add(a, b){
return a + b;
}
const sum = add(1, 2);
console.log(sum);
functino Hello(name){
console.log(Hello, ' + name + '!'); //console.log(`Hello, ${name}!`);
}
hello('yeongsin');
const add = (a, b) => {
return a + b;
};
const add2 = (a, b) => a + b;
console.log(add(1, 2));
const dog = {
name: '멍멍이', //키: 원하는 값
age: 2,
'sentence with spaces': true //공백이 있으면 따옴표로
};
console.log(dog.name); //멍멍이
console.log(dog.age); //2
console.log(dog); //{name: '멍멍이', age: 2, 'sentence with spaces': true}
const my1 = {
name: 'yeongsin',
age: 22
};
const my2 = {
name: 'sangho_lee',
age: 21
};
// 1. 함수의 파라미터를 객체로
const myProfile = (my) => {
console.log(my.name);
console.log(my.age);
};
// 분해가능
const myProfile2 = (my) => {
const {name, age} = my;
console.log(name);
console.log(age);
};
// 더 분해가능(비구조화할당)
const myProfile3 = ({name, age}) => {
console.log(name);
console.log(age);
console.log(`이름은 ${name} 나이는 ${age}입니다.`);
};
myProfile(my1);
myProfile2(my1);
myProfile3(my1);
const dog = {
name: '멍멍이',
sound: '멍멍!',
say: function say(){ //이름 없어도 됨, function()
console.log(this.sound);
}
};
dog.say();
//화살표 함수로 선언한다면 제대로 작동하지 않을수도 있음
const array = [1, 2, 3];
const objects = [{ name: '멍멍이'}, {name: '야옹이'}];
console.log(objects);
console.log(objects[0]);
console.log(objects[1]);
push 함수 이용
length 값 확인
const objects = [{ name: '멍멍이'}, {name: '야옹이'}];
objects.push({
name: '멍뭉이'
});
console.log(objects.length);
//배열에 추가하는 함수
const objectsAdd = (obj) => {
objects.push(obj);
};
objectsAdd({name: '영신'});
console.log(objects);
//배열 크기 판단하는 함수
const objectsLen = (objects) => {
if(objects.length !== 7){
console.log(`${objects.length}명 참석했습니다.`);
return;
}
console.log("모두 참석하였습니다.");
};
objectsLen(objects);
let numbers = [10, 20, 30, 40, 50];
for (let number of numbers){
console.log(number);
}
Object.entries: [[키, 값], [키, 값]] 형태의 배열로 변환
Object.keys: [키, 키, 키] 형태의 배열로 변환
Object.values: [값, 값, 값] 형태의 배열로 변환
const doggy = {
name: '멍멍이',
sound: '멍멍'
};
console.log(Object.entries(doggy));
// [ [ 'name', '멍멍이' ], [ 'sound', '멍멍' ] ]
console.log(Object.keys(doggy));
// [ 'name', 'sound' ]
console.log(Object.values(doggy));
// [ '멍멍이', '멍멍' ]
숫자로 이루어진 배열이 주어졌을 때, 해당 숫자 배열안에 들어있는 숫자 중 3보다 큰 숫자로만 이루어진 배열을 새로 만들어서 반환해보세요.
function biggerThanThree(numbers){
const newNum = [];
for(i of numbers){
if(i > 3){
newNum.push(i);
}
}
return newNum;
}
const numbers = [1, 2, 3, 4, 5, 6, 7];
console.log(biggerThanThree(numbers));
함수의 파라미터는 각 원소에 대하여 처리하고 싶은 코드를 함수로
const superheroes = ['아이언맨', '캡틴 아메리카', '토르', '닥터 스트레인지'];
superheroes.forEach(hero => {
console.log(hero);
});
함수의 parameter hero는 각 원소를 가르킴
함수의 파라미터는 변화를 주는 함수(변화함수)
const array = [1, 2, 3, 4, 5, 6, 7, 8];
const square = n => n * n;
const squared = array.map(square);
//const squared = array.map(n => n * n);
console.log(squared);
원하는 항목이 몇번째 원소인지 찾아주는 함수
const superheroes = ['아이언맨', '캡틴 아메리카', '토르', '닥터 스트레인지'];
const index = superheroes.indexOf('토르');
console.log(index);
배열 안의 값이 객체나 배열이라면 indexOf 사용 불가 => findIndex
찾아낸 값 자체를 반환 => find
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
const todo = todos.find(todo => todo.id ===3);
console.log(todo);
//{id: 3, text: "객체와 배열 배우기", done: true}
배열에서 특정 조건을 만족하는 값들만 추출하여 새로운 배열 만든다.
파라미터는 조건을 감사하는 함수, 이 함수의 파라미터로 각 원소의 값 받아옴
const todos = [
{
id: 1,
text: '자바스크립트 입문',
done: true
},
{
id: 2,
text: '함수 배우기',
done: true
},
{
id: 3,
text: '객체와 배열 배우기',
done: true
},
{
id: 4,
text: '배열 내장함수 배우기',
done: false
}
];
const taskNotDone = todos.fillter(todo => todo.done === false);
//const taskNotDone = todos.filter(todo => !todo.done);
console.log(tasksNotDone);
splice : 배열에서 특정 항목을 제거
첫번째 파라미터 - 어떤 인덱스부터 지울지
두번째 파라미터 - 그 인덱스부터 몇개를 지울지
slice : 기존의 배열을 건들이지 않으며 배열을 잘라냄
첫번째 파라미터 : 어디서부터 자를지
두번째 파라미터 : 어디전까지 자를지
//splice
const numbers = [10, 20, 30, 40];
const index = numbers.indexOf(30);
numbers.splice(index, 1); //2부터 1개 지움
console.log(numbers); //[10, 20, 40]
//slice
const sliced = numbers.slice(0, 2); //0부터 2전까지 지움
console.log(sliced); //[10, 20]
console.log(numbers); //[10, 20, 40] 바뀌지 않음
shift : 첫번째 원소를 배열에서 추출(배열에서 해당 원소 사라짐)
pop : 맨 마지막 항목을 추출(배열에서 해당 원소 사라짐, push의 반대)
unshift : 맨 앞에 새 원소 추가(shift의 반대)
//shift
const numbers = [10, 20, 30, 40];
const value = numbers.shift();
console.log(value); //10
console.log(numbers); //[20, 30, 40]
//pop
const value2 = numbers.pop();
console.log(value2); //40
conosle.log(numbers); //[20, 30]
//unshift
numbers.unshift(5);
console.log(numbers);//[5, 20, 30]
concat : 여러개의 배열을 하나의 배열로 합쳐줌, 기존 배열에는 영향없음
join : 배열 안의 값들을 문자열 형태로 합쳐줌
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const concated = arr1.concat(arr2);
console.log(concated); //[1, 2, 3, 4, 5, 6]
console.log(concated.join()); //1,2,3,4,5,6
console.log(concated.join(' ')); //1 2 3 4 5 6
console.log(concated.join(', ')); //1, 2, 3, 4, 5, 6
두 개의 파라미터 가짐
const numbers = [1, 2, 3, 4, 5];
let sum = array.reduce((accumulator, current) => accumulator + current, 0);
console.log(sum); //15
첫번째 파라미터 : accumulator(누적된 값)와 current를 파라미터로 결과를 반환하는 콜백함수
두번째 파라미터 : reduce함수에서 사용할 초깃값
const numbers = [1, 2, 3, 4, 5];
let sum = numbers.reduce((accumulator, current) => {
console.log({ accumulator, current});
return accumulator + current;
}, 0);
console.log(sum);
결과
const numbers = [1, 2, 3, 4, 5];
let sum = numbers.reduce((accumulator, current, index, array) => {
if (index === array.length - 1) {
return (accumulator + current) / array.length;
}
return accumulator + current;
}, 0);
console.log(sum); //3
퀴즈 - 숫자 배열이 주어졌을 때 10보다 큰 숫자의 갯수를 반환하는 함수를 만드세요.
// reduce함수 사용
function countBiggerThanTen(numbers){
const num = numbers.reduce((accumulator, current) =>{
if(current > 10){
accumulator += 1;
}
return accumulator;
}, 0);
return num;
}
// fillter함수 사용
function countFilter(numbers){
const num = numbers.filter(number => number > 10);
return num.length;
}
// map함수 사용
function countMap(numbers){
let count = 0;
numbers.map(num => {
if(num > 10)
count++;
})
return count;
}
const count = countBiggerThanTen([1, 2, 3, 5, 10, 20, 30, 40, 50, 60]);
console.log(count);
const count2 = countFilter([1, 2, 3, 5, 10, 20, 30, 40, 50, 60]);
console.log(count2);
const count3 = countMap([1, 2, 3, 5, 10, 20, 30, 40, 50, 60]);
console.log(count3);