본문 바로가기

하루정리

2022.09.14 Java Script 배열 함수

//join : String 타입으로 바꿔서 출력
const fruits = ['apple', 'banana', 'orange'];
const result = fruits.join(|); //괄호 안에는 구분자(생략가능)
console.log(fruits); // apple|banana|orange
//구분자 생략 -> apple, banana, orange : ,가 디폴트 값


//split : 세퍼레이터와 (구분자), 리밋트를 파라미터로 받음
//세퍼레이터(필수), 리미터(리턴 가능한 배열의 사이즈<생략가능>)
const fruits = ['세모','네모','동그라미', '오각형']
const result = fruits(','); or (',', 2);
console.log(result); // ["세모", "네모", "동그라미", "오각형"]
//리미트2 -> ["세모", "네모"]
// 구분자 미전달 -> ["세모", 네모, 동그라미, 오각형"] 한대 묶여서 나옴, 


//reverse
const arr = [1,2,3,4,5];
const result = arr.result();
console.log(result); => [5,4,3,2,1]
			(arr); => [5,4,3,2,1]
//리턴값도 역순이지만 사용한 배열도 역순이 된다. 

//splice / slice
const arr = [1,2,3,4,5];
const result = arr.splice(0,2); // 0 : 시작 index번호, 2: 삭제할 갯수
//splice = 배열 자체를 변화
console.log(arr); => [3,4,5]
 			result = [3,4,5]
            
//slice : 배열의 특정부분 리턴 start와 end 지정
//start : 배열 시작 index 지정
// end는 배열의 끝점 index 0~2로 지정하면 2를 배제하고 0~1까지 전달한다. 
const arr = [1,2,3,4,5];
const result = arr.slice(2,5); // 2 : 시작 index번호, 5: 옮길 갯수 5-1이니 4번 index번호 까지
//값을 받아오겠다. 즉 2~4 index번호 까지의 값을 가져온다. 
//splice = 배열 자체를 변화
console.log(result); => [3,4,5]
 			arr = [1,2,3,4,5]  //slice는 array를 변화시키지 않음. 
            
            
class Student{
const tructor (name, age, enrolled, score){
this.name = name;
this.age; = age;
this.enrolled = enrolled;
this.score = score;
}
}

 
const student= [
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);
];

//점수가 90점인 학생 찾기 
const result = student.find((student) => student.score ===90);
//함수 result 는 student.find를 리턴한다. (student)를 받을 때 조건이 student.score ===90 인 학생
//find는 teue를 찾으면 그 값을 리턴한다. 찾으면 연산이 멈추고 리턴 

//filter : 수업을 등록한 학생만 찾아 배열로 만들어라 
//filter(callBack 함수 -> true면 배열
const result = student.filter((student) => student.enrolled);
console.log(result); => 0: name : "a" .....
						1: name : "c" .....
                        2: name : "e" .....
                        
                        
//점수만 뽑아서 새로운 배열
//map
const result = student.map((student) => student.score);
console.log(result); => 45, 80, 90, 66, 88

//50점 보다 낮은 점수가 있는지 없는지
//some = callBack 함수가 return이 true가 있는지 확인
//배열중 하나가 만족하는지
const result = student.some((student) => student.score<50);
console.log(result); //true

//every = 배열에 있는 모든 요소들이 이 조건을 만족해야 true
const result = student.every((student) => student.score>=50);
console.log(result); //false

//평균점수 구하기 
//reduce 리듀스 : 콜백, 이니셜 벨류 전달 콜백은 모든 배열안에 있는 모든 요소(값) 호출 가능
//즉 배열에 있는 모든 요소의 값을 누적, 모아놓음
//우리가 원하는 시작점 부터 배열을 돌며 값을 누적시킨다. 
const result = student.reduce((prev, curr) => prev + student.score, 0);
//prev:이전에 callBack함수에서 리턴된 값이 전달된다. ==이전 함수의 총합
//curr: 배열의 아이템이 순차적으로 전달된다. = 점수 총합 + 배열의 아이템 값
console.log(prev); //281
console.log(curr); //student [name:"e" ........ score : 88]
								369
                                
//학생들의 모든 점수를 스트링으로 변환 
const result = student.map((studentr) => student.score)
.filter((score) =>score >=50)
.join();
console.log(result); 45, 80, 90, 66, 88
//map로 점수만 배열로 만들고
//filter로 50점 미만을 제외하고
//join으로 String로 출력 
//이런 것들을 함수형 프로그래밍이라고 함.