자바스크립트 9. 유용한 10가지 배열 함수들. Array APIs 총정리

    728x90
    반응형
    // 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 = 'apple, banana, cherry';
    const result = fruits.split(',');
    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.resverse();
    console.log(result);
    
    // Q4. make new array without the first two elements
    // slice는 기존 배열 변형안시키고 새로운 배열 만듬, splice는 기존 배열 변형시키고 필요한것 빼옴
    const array = [1, 2, 3, 4, 5];
    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
    const result = students.find(function(student, index) {
    	return student.score === 90;
    })
    // arrow function 일때 한 문장이면 {}생략 가능, return 생략 가능
    const result = students.find(() => 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 contatining only the student's 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 then 50
    // some 배열의 요소중에서 하나라도 callback의 트루가 있는지 없는지 확인할때, 배열중에 어떤 것이라도 하나 만족되는것이 있을 때
    const result = students.some((student) => student.score < 50);
    console.log(result);
    // every는 모든 요소가 callback의 트루가 되어야 트루가 나온다. 모든 배열의 조건이 만족되어야 할 때
    const result = !students.every((student) => student.score >= 50);
    console.log(result);
    
    // Q9. compute students average score
    // reduce callback에서 리턴되는 값은 누적되는 값을 전달, initial  , 배열의 모든 값들을 누적할 때 사용
    const result = students.reduce((prev, curr) => {
    	console.log(prev);
    	console.log(curr);
    	return prev + curr.score; 리턴하는 값들이 prev로 전달되어 누적
    }, 0)
    이니셜 값을 주면 prev가 이니셜 값 부터
    console.log(result);
    
    // students.reduceRight reduce와 같은데 배열의 반대서부터 시작
    const result = students.reduceRight((prev, curr) => {
    	console.log(prev);
    	console.log(curr);
    	return prev + curr.score; 리턴하는 값들이 prev로 전달되어 누적
    }, 0)
    console.log(result);
    
    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);
    
    
    
    
    
    
    

     

    https://www.youtube.com/watch?v=3CUjtKJ7PJg

     

    728x90
    반응형

    댓글