Java Script / 유용한 10가지 배열 함수들

WWWWWWWWW·2023년 6월 11일
0

문제 출처.
youtube. 드림코딩
(자바스크립트 9. 유용한 10가지 배열 함수들. Array APIs 총정리 | 프론트엔드 개발자 입문편)

Q1. 배열에서 문자열 만들기

{
  const fruits = ["apple", "banana", "orange"];
  const result = fruits.join(",");
  console.log(result);
}
  • join은 배열을 문자열로 변환

Q2. 문자열로 배열 만들기

{
  const fruits = "🍎, 🥝, 🍌, 🍒";
  const result = fruits.split(",");
  console.log(result);
}
  • split은 문자열을 배열로 변환.

Q3. 이 배열을 다음과 같이 만듭니다. [5, 4, 3, 2, 1]

{
  const array = [1, 2, 3, 4, 5];
  const result = array.reverse();
  console.log(result);
}
  • reverse는 배열을 거꾸로 변환 (배열만 적용 가능)
  • 만약 문자열을 적용하고 싶다면 .split("").reverse().join("")를 사용하여 문자열을 배열로 바꾸고 거꾸로 변환한 후 다시 문자열로 변환해서 사용

Q4. 처음 두 요소 없이 새 배열 만들기

{
  const array = [1, 2, 3, 4, 5];
  const result = array.slice(2, 5);
  console.log(result);
}
  • .slice(2, 5)는 배열의 인덱스 2부터 인덱스 4까지의 요소를 추출한 새로운 배열 반환->[3,4,5]
  • 첫 번째 매개변수는 추출을 시작할 인덱스이고 두 번째 매개변수는 추출을 종료할 인덱스
  • 만약 인덱스2부터 마지막 인덱스까지 추출하고싶다면 메소드의 두번째 인덱스를 생략하면 마지막 인덱스까지 추출 함.

Q5~Q11

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. 점수가 90점인 학생 찾기

{
  const result = students.find((student) => student.score === 90);
  console.log(result);
}
  • find: 주어진 배열에서 첫 번째로 조건을 만족하는 요소를 찾아서 반환합니다. (첫번째 조건만족->종료)
  • 배열을 순차적으로 검색하다가 조건을 만족하는 요소를 찾으면 검색을 멈추고 해당 요소를 반환

Q6. 등록된 학생들의 배열을 만들기

{
  const result = students.filter((student) => student.enrolled);
  console.log(result);
}
  • 배열을 순차적으로 검색하면서 조건을 만족하는 모든 요소를 찾아서 새로운 배열에 추가

Q7. 학생의 점수만 포함하는 배열 만들기
result should be: [45, 80, 90, 66, 88]

{
  const result = students.map((student) => student.score);
  console.log(result);
}
  • map 메소드는 배열의 각 요소에 대해 주어진 콜백 함수를 호출
  • 콜백 함수의 반환값으로 이루어진 새로운 배열을 생성
  • 값을 두배로 리턴하고 싶으면 student.score * 2 라고 하면 2배값이 리턴 됨

Q8. 점수가 50점 미만인 학생이 있는지 확인

{
 const result = students.filter((student) => student.score < 50);
 console.log(result); -> 조건에 만족하는 학생이 리턴
 const result = students.some((student) => student.score < 50);
 console.log(result); //-> 학생들 중 50점 보다 낮은 점수가 있는지 -> true 리턴
}

Q9. 학생들의 평균 점수 계산

{
  const result = students.reduce((prev, curr) => {
    return prev + curr.score;
  }, 0);
  console.log(result / students.length);
}
  • reduce 메소드는 배열의 각 요소에 대해 주어진 콜백 함수를 순차적으로 호출하여 하나의 값으로 축약
  • 초기값으로 0이 주어졌으므로, 첫 번째 순회에서는 prev 값이 0
  • 각 순회마다 prev에 curr.score를 더해주므로
  • 모든 students 배열의 score 속성 값을 더한 총합이 반환

Q10. 모든 점수를 포함하는 문자열 만들기
result should be: '45, 80, 90, 66, 88'

{
  const result = students.map((student) => student.score).join();
  console.log(result);
}
  • students 배열의 각 요소에서 score 속성만을 추출한 후, (map은 배열을 생성)
  • 이를 문자열로 변환하여 쉼표로 구분한 결과를 출력 (join은 배열을 문자열로 변경)

보너스! 오름차순으로 정렬된 Q10 수행

// result should be: '45, 66, 80, 88, 90'
{
  const result = students
    .map((student) => student.score)
    .sort((a, b) => a - b)
    .join();
  console.log(result);
}
  • students 배열에서 score 속성값을 추출한 후, map사용 배열로 추출
  • 오름차순으로 정렬하고 -> sort((a, b)=> a - b) 내림차순은 b - a
  • 정렬된 결과를 쉼표로 구분한 문자열로 변환하여 출력 ->join 사용
profile
개발자가 되기 위한 노트

0개의 댓글

관련 채용 정보