JavaScript

드림코딩 : JS -9. array API 총정리

식초 2020. 10. 19. 16:59
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
// 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(',');
    console.log(result);
}
 
// Q3. make this array look like this: [5, 4, 3, 2, 1]
{
    const array = [12345];
    const result = array.reverse();
    console.log(result);
    console.log(array);  //원래 배열 자체도 순서 바뀜
}
 
// Q4. make new array without the first two elements
{
    const array = [12345];
    //const result = array.splice(0,2);  //원래 배열을 변형시킨다 != new array
    //console.log(result);  //[1,2], 뺀 값을 보여준다
    //console.log(array);  //[3,4,5], 원래 배열 자체에는 남아있는 것
    
    const result = array.slice(25);  //2~4인덱스 원하는 부분만 받아온다, new array
    console.log(result); //[3,4,5], 새로운 배열
    console.log(array); //[1,2,3,4,5], 원래 배열 그대로이다
}
 
 
class Student {
    constructor(name, age, enrolled, score) {
    this.name = name;
    this.age = age;
    this.enrolled = enrolled;
    this.score = score;
    }
}
const students = [
    new Student('A'29true45),
    new Student('B'28false80),
    new Student('C'30true90),
    new Student('D'40false66),
    new Student('E'18true88),
];
 
// Q5. find a student with the score 90
{
    const result = students.find((student) => student.score === 90); //한줄로 작성한다, arrow function
    //find함수는 callback함수 전달해서 첫번째 true값이 나오면 멈추고 값을 return한다
    console.log(result); //점수가 90점인 Student array가 리턴된다
}
 
// Q6. make an array of enrolled students
{
    const result = students.filter((student) => student.enrolled);
    //filter함수는 callback함수 전달해서 true인 값들만 모아서 새로운 배열을 만든다
    console.log(result); //총 3명의 배열이 나온다
}
 
// Q7. make an array containing only the students' scores
// result should be: [45, 80, 90, 66, 88]
{
    const result = students.map((student) => student.score);
    //map함수는 배열 안의 요소 한가지 한가지를 다른 요소로 변환한다, callback함수에서 가공되어진 값으로 리턴한다, student.score *2 해도 된다
    //callback 함수에서 인자는 이해하기 쉽게 정한다. student O, value X
    console.log(result);
}
 
// Q8. check if there is a student with the score lower than 50
{
    console.clear();
    const result = students.some((student) => student.score < 50);
    //some함수는 배열 요소 중 하나라도 조건 충족하면 true이다
    console.log(result);  //true 
 
    const result2 = !students.every((student) => student.score >= 50);
    //every함수는 배열 요소 모두가 조건 충족하면 true이다
    //복잡하다, !을 붙이면 반대의 값이 나온다 ex. false이면 true로 나온다
    console.log(result2);  
}
 
// Q9. compute students' average score
{   
    console.clear()
    const result = students.reduce((prev, curr) => {
    //reduce함수는 callback, initial-value 전달한다
    //reduce함수는 배열 안에 들어있는 모든 요소만다 호출된다, filter, some, every와 비슷하다
    //callback 리턴할 때, 누적된 값 리턴한다
    //reduce함수는 원하는 시작점부터 모든 배열을 돌면서 값을 누적할 때 쓰인다
    //reduceRight는 거꾸로 호출할 때 사용한다
        console.log('--------');  //구분선
        console.log(prev);
        //prev는 이전에 callback 함수에서 리턴된 값이 전달된다
        console.log(curr);
        //curr는 배열의 아이템을 순차적으로 전달받는다
        return prev + curr.score; //리턴을 해줘야한다
        //이전 값 + 현재의 점수, 누적해서 더해진다
    },0); //initial-value 추가하면 이 값(원하는 값)부터 시작한다
    console.log(result);
}
 
{
    console.clear();
    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)  //점수가 50점 이상만 필터링
    .join();  //API 섞어서 호출 가능, 묶어 쓰면 가독성 좋아짐
    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) //a(이전값)-b(현재값)가 음수이면 a가 b보다 작은 순서대로 정렬된다 
    .join();
    console.log(result);
}
 
 
cs

 

 

콘솔 출력값

'JavaScript' 카테고리의 다른 글

드림코딩 : JS - 11. Callback 지옥  (0) 2020.10.20
드림코딩 : JS - 10. JSON, this 오류  (0) 2020.10.20
드림코딩 : JS - 8. array  (0) 2020.10.19
드림코딩 : JS -7. object  (0) 2020.10.19
드림코딩 : JS - 6. 객체 지향 class  (0) 2020.10.16