알고리즘을 위한 막 메모

Hello, JavaScript: 자바스크립트 입문

let a = 100, b = 3.14;
let c = "안녕하세요", d = "a";
let e = true, f = false;

console.log(a, typeof (a));
console.log(c, typeof (c));
console.log(e, typeof (e));

let c=1e-3;
console.log(c) //0.001

let height="168.3"
console.log(height, typeof(height)); //168.3 string

let height_int = parseInt(height);
console.log(height_int, typeof(height_int)); //168 number

let height_float = parseFloat(height);
console.log(height_float, typeof(height_float)); //168.3 number

let height="168.3입니다"
console.log(height, typeof(height)); //168.3입니다 string

let height_int = parseInt(height); 정수
console.log(height_int, typeof(height_int)); //168 number

let height_float = parseFloat(height); 실수
console.log(height_float, typeof(height_float)); //168.3 number

let height="제 키는 168.3입니다"
console.log(height, typeof(height)); //제 키는 168.3입니다 string

let height_int = parseInt(height);
console.log(height_int, typeof(height_int)); // NaN number

let height_float = parseFloat(height);
console.log(height_float, typeof(height_float)); // NaN number

let a = '문자열을 따옴표로 둘러싸면 됩니다.';
let b = "쌍따옴표로도 문자열을 표현할 수 있습니다.";

let c = "쌍따옴표 문자열에는 따옴표'를 사용할 수 있습니다.";
let d = '따옴표 문자열에는 쌍따옴표 "를 사용할 수 있습니다.';

let e = "따옴표를 쓰고 싶다면 \'이렇게\' 사용하면 됩니다. 마찬가지로 \"쌍따옴표\"도 쓸 수 있습니다.";
let f = '따옴표를 쓰고 싶다면 \'이렇게\' 사용하면 됩니다. 마찬가지로 \"쌍따옴표\"도 쓸 수 있습니다.';

let g = "\\ 문자를 쓰고 싶다면 역슬래시를 두번 씁니다.";

let h = "문자열에서 줄바꿈을 하고 싶다면,\n 역슬래시n 을 사용합니다.";

let i = a = b;

let j = "abcde";

console.log(a); //쌍따옴표로도 문자열을 표현할 수 있습니다.
console.log(b); //쌍따옴표로도 문자열을 표현할 수 있습니다.
console.log (typeof(a)); //string
console.log(c); 
//쌍따옴표 문자열에는 따옴표'를 사용할 수 있습니다.
console.log(d); 
//따옴표 문자열에는 쌍따옴표 "를 사용할 수 있습니다.
console.log(e); 
//따옴표를 쓰고 싶다면 '이렇게' 사용하면 됩니다. 마찬가지로 "쌍따옴표"도 쓸 수 있습니다.
console.log(f); 
//따옴표를 쓰고 싶다면 '이렇게' 사용하면 됩니다. 마찬가지로 "쌍따옴표"도 쓸 수 있습니다.
console.log(g); 
//\ 문자를 쓰고 싶다면 역슬래시를 두번 씁니다.
console.log(h); 
//문자열에서 줄바꿈을 하고 싶다면,
 역슬래시n 을 사용합니다.
console.log(i); 
//쌍따옴표로도 문자열을 표현할 수 있습니다.
console.log(j); 
//abcde

let empty_obj = {};
console.log(empty_obj, typeof(empty_obj)); // {} object
let man = {name: "홍길동", age: 20, height:180 };
console.log(man, typeof(man)); // { name: '홍길동', age: 20, height: 180 } object
console.log(man.name); // 홍길동
console.log(man["name"]); // 홍길동
man.name = "이몽룡";
man["age"] = 15;
console.log(man); // { name: '이몽룡', age: 15, height: 180 }

let uninitialized_let;

let obj = {
x:1,
y:2
};

let null_let;
null_let = null; // null이라는 빈 객체가 저장되어있다.

console.log(uninitialized_let, typeof(uninitialized_let))// undefined undefined
console.log(obj)// { x: 1, y: 2 }
console.log(obj["x"])// 1
console.log(obj.x) // 1
console.log(obj.z, typeof(obj)) //비어있고, 지정하지 않았다 // undefined object
console.log(null_let, typeof(null_let))//비어있지만 null을 넣었다 //null object

산술 연산자 Arithmetic Operator

let a = 5, b = 3;
console.log(a+b); //8
console.log(a-b); //2
console.log(a+3); //8
console.log(5+3); //8
console.log(a*b); //15
console.log(a/b); //1.6666666666666667
console.log(a%b); //2
console.log(-a); //-5

let c = 4;
console.log(c); //4
console.log(++c); //c = c + 1; //5
console.log(c); //5

let d = 4;
console.log(d); //4
console.log(d++); // d = d + 1; //4
console.log(d); //5

let e = 5;
console.log(e); //5
console.log(--e); //4
console.log(e); //4

let f = 5;
console.log(f); //5
console.log(f--); //5
console.log(f); //4

Math.pow(2,3); //제곱
console.log(Math.pow(2,3)) //8
Math.sqrt(16); //제곱근
console.log(Math.sqrt(16)) //4
Math.random(); //아무거나, 임의의 숫자 난수
console.log(Math.random()) //0.1581636151840229

함수
함수를 '호출'한다.
console.log("콘솔에 로그를 남기는 함수");

function 함수이름 (인자1, 인자2) {
실행할 코드
return 결과값;
}

function return_test() {
return;
console.log("실행되지 않는 코드");
}

function print(message){
console.log("print function in");
console.log(message);
console.log("print function out");
}

function sum(arg1, arg2){
let result = arg1 + arg2;
return result;
}

 return_test();
undefined
 print("hi");
print function in
hi
print function out
undefined
 sum(1 ,2);
3

let a = 1, b = 2, c = 3, d = 4;
let e = "a", f = "b", g = "c", h = "d";

 a<b
true
 a>b
false
 a<=b
true
 a>=b
false
 a===a
true
 a===b
false
 a!=b
true
 a!=a
false
 e!=e
false
 e===e
true
 e<f
true
 f<e
false
 1<3
true
 "a"<"b"
true

Logical Operator 논리 연산자 And Or Not

&& 둘 다 true여야 true반환
|| 둘 중 하나라도 true이면 true반환
!true
false
!false
true

연산의 우선순위

  1. Logical Operator: NOT(!)
  2. Arithmetic Operator: *,/,%,+,-
  3. Relational Operator: >,<,<=,>=,==,!=
  4. Logical Operator: AND (&&)
  5. Logical Operator: OR (||)

2 3 > 4 + 5 && 6 / 3 == 2 || !false
-> 2
3 > 4 + 5 && 6 / 3 == 2 || true
-> 6 > 9 && 2 == 2 || true
-> false && true || ture
-> false || true
-> true

height >= 180 && gender == "male" || height >= 165 && gender == "female"
(height >= 180 && gender == "male") || (height >= 165 && gender == "female")
코드만 보고 명확하게 알 수 있는 것은 두 번째 코드. 괄호쓰기에 유의하기.

문자열 String 이어 붙이기
 let str = "Hello";
undefined
 str.length;
5
 str["length"];
5
 let str2 = " World";
undefined
 str.concat(str2);
'Hello World'
 let str3=str.concat(str2);
undefined
 str3;
'Hello World'
 str.concat(str2).concat("!");
'Hello World!'
 "Hello".concat(" World").concat("!");
'Hello World!'
 "hello".length
5
 str+str2;
'Hello World'
 "Hello" + "World"
'HelloWorld'
 "Pi is " + 3.14
'Pi is 3.14'
 3.14 " is" + Pi
REPL43:1
3.14 " is" + Pi

SyntaxError: Unexpected string
 3.14 + " is Pi";
'3.14 is Pi'

 let str = "abcdeabcde";
undefined
 str.charAt(0);
'a'
 str.length
10
 str.charAt(9);
'e'
 str.charAt(10);
''
 str.charAt(-1);
''
 str[1]; 인덱스로 지정
'b'
 str[10]; 범위를 벗어난 경우
undefined
 str[-1];
undefined
 str.substring(2, 4); 2에서 4 -> 인덱스2자리에서 에서 4자리의 전까지 표기
'cd'
 str.substr(2,4); 인덱스2에서 인덱스 길이가 4개.
'cdea'
 str.substring(2); 두번째 숫자를 생략하면 자동으로 마지막까지
'cdeabcde'
 str.substr(2);
'cdeabcde'
 str.substr(-7); 음수인 경우, 뒤에서부터 하나로 카운트, 부분 문자열을 구할 수 있다.
'deabcde'
 str
'abcdeabcde'
 str.substr(-7,2); 길이
'de'
 str.indexOf("bc"); bc가 시작되는 자리 인덱스1
1
 str.lastIndexOf("bc"); bc가 시작되는 마지막 인덱스 자리 6
6
 str.lastIndexOf("f"); 존재하지 않는 문자열은 -1
-1

배열 object객체와 다르게 이름이 없고, 인덱스로 나열만 되어있다.

 let arr=[];
undefined
 let arr2=[1,2,3,4,5];
undefined
 arr2;
[ 1, 2, 3, 4, 5 ]
 let mixed_arr = [1,true, 3.14, "string", {name:"object"}, [1,2,3]];
undefined
 mixed_arr
[ 1, true, 3.14, 'string', { name: 'object' }, [ 1, 2, 3 ] ]
 mixed_arr.length
6
 arr2.length
5
 arr.length
0
 arr2[0]
1
 arr2[3]
4
 arr2[7];
undefined

pop, push, shift, unshift

Hint: hit control+c anytime to enter REPL.
 let arr = [1,2,3,4,5];
undefined
 arr.pop();
5
 arr
[ 1, 2, 3, 4 ]
 arr.shift();
1
 arr
[ 2, 3, 4 ]
 arr.push(6);
4
 arr;
[ 2, 3, 4, 6 ]
 arr.unshift(0);
5
 arr
[ 0, 2, 3, 4, 6 ]
 arr.reverse();
[ 6, 4, 3, 2, 0 ]
 arr;
[ 6, 4, 3, 2, 0 ]
 arr.sort();
[ 0, 2, 3, 4, 6 ]
 arr;
[ 0, 2, 3, 4, 6 ]
 let arr1 = [1,2,3];
undefined
 let arr2 = [4,5,6];
undefined
 arr1.concat(arr2);
[ 1, 2, 3, 4, 5, 6 ]
 arr1
[ 1, 2, 3 ]
 arr2
[ 4, 5, 6 ]
 arr3 = arr1.concat(arr2);
[ 1, 2, 3, 4, 5, 6 ]
 let arr4 = [1,2,3,1,2,3];
undefined
 arr4.indexOf(2);
1
 arr4.lastIndexOf(2);
4
 let str = "1,2,3,4,5";
undefined
 str.split(",");
[ '1', '2', '3', '4', '5' ]

if문

if(true){
console.log("1");
}
else{
console.log("2");
}

//1

if(false){
console.log("1");
}
else{
console.log("2");
}

//2

if (false) {
console.log("1");
}
else if (true) {
console.log("2");
}
else if (true) {
console.log("3");
}
else {
console.log("4");
}
//2

윤년인지 확인!
인자 year가 윤년인지 아닌지를 true, false로 반환하는 solution함수를 완성하세요.
(편의상, 4의 배수인 해는 모두 윤년으로 생각하세요.)

function solution( year ){
//if 문을 추가하세요
if (year % 4 === 0)
return true;
//else 문을 추가하세요
else
return false;
}

switch문

console.log("Menu");
console.log("1. Ice Americano");
console.log("2. Cafe Latte");
console.log("3. Cappuccino");
console.log("4. Tea");

let choice = parseInt( prompt("메뉴를 선택해 주세요"));
console.log( choice + " 번 메뉴를 선택하셨습니다.");

if (choice === 1) {
console.log("아이스 아메리카노는 1500원 입니다.");
}
else if ( choice === 2) {
console.log("카페라테는 1800원 입니다.");
}
else if ( choice === 3) {
console.log("카푸치노는 2000원 입니다.");
}
else if ( choice === 4) {
console.log("홍차는 1300원 입니다.");
}
else{
console.log("죄송합니다. 그런 메뉴는 없습니다.");
}

Menu
1. Ice Americano
2. Cafe Latte
3. Cappuccino
4. Tea
메뉴를 선택해 주세요> 1
1 번 메뉴를 선택하셨습니다.
아이스 아메리카노는 1500원 입니다.

console.log("Menu");
console.log("1. Ice Americano");
console.log("2. Cafe Latte");
console.log("3. Cappuccino");
console.log("4. Tea");

let choice = parseInt( prompt("메뉴를 선택해 주세요"));
console.log( choice + " 번 메뉴를 선택하셨습니다.");

switch (choice) {
case 1:
console.log("아이스 아메리카노는 1500원 입니다.");
break;
case 2:
console.log("카페라테는 1800원 입니다.");
break;
case 3:
console.log("카푸치노는 2000원 입니다.");
break;
case 4:
console.log("홍차는 1300원 입니다.");
break;
default:
console.log("죄송합니다. 그런 메뉴는 없습니다.");
break;
}

Menu
1. Ice Americano
2. Cafe Latte
3. Cappuccino
4. Tea
메뉴를 선택해 주세요> 3
3 번 메뉴를 선택하셨습니다.
카푸치노는 2000원 입니다.
Hint: hit control+c anytime to enter REPL.

console.log("Menu");
console.log("1. Ice Americano");
console.log("2. Cafe Latte");
console.log("3. Cappuccino");
console.log("4. Tea");

let choice = parseInt( prompt("메뉴를 선택해 주세요"));
console.log( choice + " 번 메뉴를 선택하셨습니다.");

switch (choice) {
case 1:
console.log("아이스 아메리카노는 1500원 입니다.");
//break;
case 2:
console.log("카페라테는 1800원 입니다.");
break;
case 3:
console.log("카푸치노는 2000원 입니다.");
break;
case 4:
console.log("홍차는 1300원 입니다.");
break;
default:
console.log("죄송합니다. 그런 메뉴는 없습니다.");
break;
}

Menu
1. Ice Americano
2. Cafe Latte
3. Cappuccino
4. Tea
메뉴를 선택해 주세요> 1
1 번 메뉴를 선택하셨습니다.
아이스 아메리카노는 1500원 입니다.
카페라테는 1800원 입니다.

break가 주석처리되면 다음 break때 걸리게 된다.

각 달을 month라는 인자로 받아 그 달이 몇일까지 있는 반환하는 함수 solution함수를 완성하세요.
(2월은 28일까지 있다고 가정하세요.)

function solution(month) {
switch(month) {
case 2:
return 28;
case 4: case 6: case 9: case 11:
return 30;
default:
return 31;
}
}

console.log(solution(1)); // 31

while문

console.log("Menu");
console.log("1. Ice Americano");
console.log("2. Cafe Latte");
console.log("3. Cappuccino");
console.log("4. Tea");

let count = 0;

while (count < 3) {
let choice = parseInt( prompt("메뉴를 선택해 주세요"));
console.log( choice + " 번 메뉴를 선택하셨습니다.");

switch (choice) {
case 1:
console.log("아이스 아메리카노는 1500원 입니다.");
//break;
case 2:
console.log("카페라테는 1800원 입니다.");
break;
case 3:
console.log("카푸치노는 2000원 입니다.");
break;
case 4:
console.log("홍차는 1300원 입니다.");
break;
default:
console.log("죄송합니다. 그런 메뉴는 없습니다.");
break;
}
count++; 한 번씩 반복하며 카운트, 세 번까지 물어보도록 설정
}

console.log("안녕히 가십시오.");

Menu
1. Ice Americano
2. Cafe Latte
3. Cappuccino
4. Tea
메뉴를 선택해 주세요 1
1 번 메뉴를 선택하셨습니다.
아이스 아메리카노는 1500원 입니다.
카페라테는 1800원 입니다.
메뉴를 선택해 주세요> 4
4 번 메뉴를 선택하셨습니다.
홍차는 1300원 입니다.
메뉴를 선택해 주세요> 3
3 번 메뉴를 선택하셨습니다.
카푸치노는 2000원 입니다.
안녕히 가십시오.
Hint: hit control+c anytime to enter REPL.

let count = 0;

while(true){
let ans;
ans = parseInt( prompt("1+1=?"));
if(ans != 2){
console.log((++count)+"번 틀렸습니다. 다시 도전하세요.");
continue;
}
ans = parseInt( prompt("7-3=?"));
if(ans != 4){
console.log((++count)+"번 틀렸습니다. 다시 도전하세요.");
continue;
}
ans = parseInt( prompt("9*7=?"));
if(ans != 63){
console.log((++count)+"번 틀렸습니다. 다시 도전하세요.");
continue;
}

break;

}

console.log("참 잘했습니다!")

1+1=?> 3
1번 틀렸습니다. 다시 도전하세요.
1+1=?> 3
2번 틀렸습니다. 다시 도전하세요.
1+1=?> 3
3번 틀렸습니다. 다시 도전하세요.
1+1=?> 3
4번 틀렸습니다. 다시 도전하세요.
1+1=?> 2
7-3=?> 4
97=?> 2
5번 틀렸습니다. 다시 도전하세요.
1+1=?> 2
7-3=?> 4
9
7=?> 33
6번 틀렸습니다. 다시 도전하세요.
1+1=?> 2
7-3=?> 4
9*7=?> 63
참 잘했습니다!
Hint: hit control+c anytime to enter REPL.

count를 0으로 초기화하고 while문 안에서 1씩 더해주고 있습니다. 이렇게 하면 count가 9까지 증가한 다음 while문의 조건에 따라 반복이 종료됩니다. [실행]버튼을 눌러서 실행 결과를 확인해 보세요.

let count = 0;
while( count < 10){
console.log( count );
count++;
}

함수 solution은 n을 인자로 받아서 1부터 n까지 더한 값을 return하는 함수입니다. 예를들어 solution(3)을 호출하면 1+2+3인 6을 return합니다.
코드 4번째줄과와 코드 5번째줄의 빈칸을 채워 solution을 완성해 보세요.

function solution(n){
let count = 1;
let sum = 0;

while (count <= n) {
sum = sum + count;
count++;
}
return sum;
}

console.log(solution(3)) //6

do while문
반복을 할지 말지를 반복문의 가장 마지막에 검사.
코드가 한 번은 실행, 더 반복할지 말지를 조건식을 보고 결정

do{
var ans = parseInt(prompt("1+1=?")); // 의식적으로 let쓰고 있었는데, var가 아니면 생각했던대로 실행이 되지 않았다.
}while(ans !=2 );

console.log("맞췄습니다.");

let cond = false;

while(cond){
console.log("이 구문은 실행되지 않습니다.");
}//false로 설정을 해두었기 때문이다

do{
console.log("이 구문은 한번은 실행됩니다.");
}while(cond);

do{
var ans = parseInt(prompt("1+1=?"));
}while(ans !=2 );

console.log("맞췄습니다.");

이 구문은 한번은 실행됩니다.
1+1=?> 3
1+1=?> 3
1+1=?> 3
1+1=?> 2 //맞출 때까지 계속 진행
맞췄습니다.

for문

let array = [1,2,3,4,5,6,7,8,9,10]; 엘리먼트에 순차적으로 접근해야한다.

let i = 0; // 반복문 진입 전 실행될 조기 코드, i 변수로 인덱스 지정,
while (i< array.length){ // 조건식

// 반복 실행될 코드
console.log(array[i]);
i++; // 반복문 코드가 한번 실행되고 나면 실행될 업데이트 구문
}

1
2
3
4
5
6
7
8
9
10

let array = [1,2,3,4,5,6,7,8,9,10];

for ( var i = 0; i < array.length ; i++ ){ //조건식

//반복 실행될 코드
console.log( array[i]);

}

1
2
3
4
5
6
7
8
9
10

for문에서 continue;문을 만나면 update구문(= i++)으로 이동, 조건식을 검사한 후에 반복실행할지 말지를 결정한다.
while문에서 continue;문을 반복실행 코드의 끝으로 이동한 다음, 바로 조건식 검사

for문을 이용해서 배열 cost의 값을 모두 더해 total_cost 변수에 저장하세요.

let cost = [ 85, 42, 37, 10, 22, 8, 15 ];
let total_cost = 0;
// 여기에 코드를 작성하세요.
for (let i = 0; i < cost.length ; i++)
{total_cost = total_cost + cost[i];} = {total_cost += cost[i];}
console.log(total_cost)
return total_cost

for in문
...?

변수의 scope function scope
선언된 변수는 선언된 함수 안에서 접근 가능

변수의 shadowing
...? var i = 1...?

method, this
...?

closure
...?

by엘리

// Q1. iterate from 0 to 10 and print only even numbers 
//(use continue)
for (let i = 0; i < 11 ; i++) {
  if (i % 2 === 0) {
  console.log(`q1. ${i}`);
  }
}
// Q2. iterate from 0 to 10 and print numbers until reaching 8 (use break)

for (let i = 0; i < 11; i++) {
if (i > 8) {
  break;
}
console.log(`q2.${i}`);
}

by엘리

'use strict';

// Array🎉

// 1. Declaration
const arr1 = new Array();
const arr2 = [1, 2];

// 2. Index position
const fruits = ['사과', '바나나'];
console.log(fruits); // ['사과', '바나나']
console.log(fruits.length); // 2
console.log(fruits[0]); //'사과'
console.log(fruits[1]); //'바나나'
console.log(fruits[2]); // undefined
console.log(fruits[fruits.length - 1]); 배열의 맨 마지막 데이터에 접근

// 3. Looping over an array
// print all fruits
// a. for
for (let i = 0; i < fruits.length; i++) {
console.log(fruits[i]);
}

// b. for of
for (let fruit of fruits) {
console.log(fruit);
}

// c. forEach
fruits.forEach((fruit) => console.log(fruit));

//4. Addition, deletion, copy
// push: add an item to the end
fruits.push('딸기','복숭아');
console.log(fruits); // ['사과', '바나나', '딸기', '복숭아']

// pop: remove an item from the end
fruits.pop();
fruits.pop();
console.log(fruits); // ['사과', '바나나', '딸기']// ['사과', '바나나'] 한번 더 호출하면 또 삭제됨

// unshift: add an item to the beginning
fruits.unshift('딸기','레몬');
console.log(fruits); // ['딸기','레몬','사과','바나나']
// shift: remove an item from the beginning
fruits.shift();
fruits.shift();
console.log(fruits); // ['레몬','사과','바나나'] // ['사과','바나나']

// note!! shift, unshift are slower than pop, push

//splice: remove an item by index position 꼬아서 잇다
fruits.push('딸기','복숭아','레몬');
console.log(fruits); //['사과','바나나','딸기','복숭아','레몬']
fruits.splice(1); // 지정한 인덱스부터 모두 지운다.
fruits.splice(1, 1); ////지정한 인덱스부터 하나만 (인덱스 자신이 됨)
console.log(fruits); ['사과'] //// console.log(fruits); ['사과', '딸기', '복숭아', '레몬']
fruits.splice(1, 1, '초록사과', '수박');
console.log(fruits); // ['사과', '초록사과', '수박', '복숭아', '레몬'] 딸기가 사라진 자리에 데이터 추가

// concat: combine two arrays
const fruits2 = ['배', '코코넛'];
const newFruits = fruits.concat(fruits2);
console.log(newFruits); //['사과', '초록사과', '수박', '복숭아', '레몬', '배', '코코넛']

//5. Searching
// indexOf: find the index
console.log(fruits); //['사과', '초록사과', '수박', '복숭아', '레몬']
console.log(fruits.indexOf('사과')); // 0
console.log(fruits.indexOf('수박')); // 2
console.log(fruits.indexOf('참외')); // -1

// includes
console.log(fruits.includes('수박')); // true
console.log(fruits.includes('참외')); // false

// lastIndexOf
console.log(fruits); // ['사과', '초록사과', '수박', '복숭아', '레몬']
fruits.push('사과');
console.log(fruits); // ['사과', '초록사과', '수박', '복숭아', '레몬', '사과']
console.log(fruits.indexOf('사과')); //0
console.log(fruits.lastIndexOf('사과')); //5

by엘리 api 총정리 퀴즈 - replit에 찍어보며 할 것

// Q1. make a string out of an array 배열을 문자형으로 변환
{
const fruits = ['apple', 'banana', 'orange'];
const result = fruits.join(', ');
console.log(result);
}

// Q2. make an array out of a string 문자열을 배열로 만들기, 구분자 꼭 전달
{
const fruits = '🍎, 🥝, 🍌, 🍒';
const result = fruits.split(',', 2);
console.log(result);
}

// Q3. make this array look like this: [5, 4, 3, 2, 1]
{
const array = [1, 2, 3, 4, 5];
const result = array.reverse();
console.log(result);
console.log(array);
}

// Q4. make new array without the first two elements
{
const array = [1, 2, 3, 4, 5];
//const result = array.splice(0, 2); 원하는 부분만 가지고 쓰고 싶을 때
//console.log(result); // [1, 2]
//console.log(array); // [3, 4, 5] array변형이 아니라 새로운 array를 만들어야함
const result = array.slice(2, 5);
console.log(result);
console.log(array);

}

class Student {
constructor(name, age, enrolled, score) {
this.name = name;
this.age = age;
this.enrolled = enrolled;
this.score = score;
}
}
const students = [
new Student('A', 29, true, 45),
new Student('B', 28, false, 80),
new Student('C', 30, true, 90),
new Student('D', 40, false, 66),
new Student('E', 18, true, 88),
];

// Q5. find a student with the score 90 callback...
{
const result = students.find((student) => student.score === 90);
console.log(result);
}

// Q6. make an array of enrolled students 골라내서 배열로 만들기
{ const result = students.filter((student) => student.enrolled);
console.log(result)
}

// Q7. make an array containing only the students' scores
// result should be: [45, 80, 90, 66, 88]
{
const result = students.map((student) => student.score);
console.log(result);
}

// Q8. check if there is a student with the score lower than 50
{
const result = students.some((student) => student.score < 50);
console.log(result);
// 어떤 것이라도 하나, 확인하고 싶을 때

const result2 = !students.every((student) => student.score >= 50);
console.log(result2);
// 모든 배열의 조건이 만족되어야 할 때
}

// Q9. compute students' average score
{ const result = students.reduce((prev, curr) => prev + curr.score, 0);
console.log(result / students.length);
}

// Q10. make a string containing all the scores
// result should be: '45, 80, 90, 66, 88'
{
const result = students
.map( student => student.score)
.filter((score) => score >= 50)
.join();
console.log(result);
}

// Bonus! do Q10 sorted in ascending order
// result should be: '45, 66, 80, 88, 90'
{
const result = students
.map( student => student.score)
.sort((a, b) => a - b)
.join();
console.log(result);
//.sort((a, b) => b - a) 내림차순
}

by 엘리

함수 선언

function doSomething( ) {
console.log('hello');
}

function add (a, b) {
const sum = a + b;
return sum;
}

함수 호출

doSomething();

const result = add(1, 2);
console.log(result);

***함수를 인자로 전달

함수 선언
function doSomething(add) {
console.log(add);
const result = add(2, 3);
console.log(result);
}

function add(a, b) {
const sum = a + b;
return sum;
}

함수 호출
doSomething(add);
doSomething(add()); // NaN (not a number)

*** 선언 & 호출 복습

function add(a, b) {
const sum = a + b;
return sum;
}

const addFun = add;
console.log(addFun);
addFun(1, 2);
-> const result = addFun(1, 2);
console.log(result)

Hello, JavaScript: 자바스크립트 입문 전 범위
자바스크립트 8. 배열 제대로 알고 쓰자. 자바스크립트 배열 개념과 APIs 총정리 | 프론트엔드 개발자 입문편 (JavaScript ES6 )
자바스크립트 9. 유용한 10가지 배열 함수들. Array APIs 총정리 | 프론트엔드 개발자 입문편 ( JavaScript ES6)
프로그래밍 포기 하지 마세요 (자바스크립트 함수 기본편)

좋은 웹페이지 즐겨찾기