배열 함수들 Array APIs

ME2DESIGNER.COM·2022년 3월 13일
0

JavaScript

목록 보기
14/16
post-thumbnail

Q1. 배열을 문자열로 반환

join

  • arr.join([separator])
  • 배열 원소를 연결하여 하나의 문자열로 반환
  • 각 구분값을 추가할 수 있으며, 구분값이 없는 경우 쉼표(,)로 표기됨
const fruits = ["apple", "banana", "orange"];
const result = fruits.join("|");
console.log(result); // apple|banana|orange



Q2. 문자열을 배열로 반환

split

  • str.split([separator[, limit]])
  • 문자열을 일정한 구분자로 잘라서 배열로 저장
  • 'limit` 입력되면 그 이하로 배열 저장됨
const fruits = "apple|banana|orange";
const result1 = fruits.split("|");
const result2 = fruits.split("|", 2); // limit 설정시

console.log(result1); // ['apple', 'banana', 'orange'];
console.log(result2); // ['apple'];



Q3. 배열 순서 반대로 변환

reverse

  • arr.reverse()
  • 배열의 원소의 순서를 반대로 만드는 메서드
  • 순서가 바뀐 배열을 새로 만드는 것이 아니라, 기존 배열의 순서가 변경됨
const array = [1, 2, 3, 4, 5];
const result = array.reverse();

console.log(result); // [5, 4, 3, 2, 1]
console.log(array); // [5, 4, 3, 2, 1]



Q4. 첫 번째, 두 번째 인자값을 제외한 새로운 배열 생성

slice

  • arr.slice([begin[, end]])
  • begin : 추출 시작점에 대한 인덱스.
    • undefined인 경우 : 0부터 slice
    • 음수를 지정한 경우 : 배열의 끝에서부터의 길이를 나타낸다. slice(-2) 경우 배열의 마지막 2개의 요소 추출한다.
    • 배열의 길이와 같거나 큰 수를 지정한 경우: 빈 배열을 반환한다.

  • end : 추출을 종료할 기준 인덱스. (end를 제외하고 그 전까지의 요소만 추출한다.)
    • 지정하지 않을 경우: 배열의 끝까지 slice
    • 음수를 지정한 경우: 배열의 끝에서부터의 길이를 나타낸다.
      slice(2, -1)를 하면 세번째부터 끝에서 두번째 요소까지 추출
    • 배열의 길이와 같거나 큰 수를 지정한 경우: 배열의 끝까지 추출.

  • 반환값 : 추출한 요소를 포함한 새로운 배열.
const array = [1, 2, 3, 4, 5];
const result = array.slice(2);

console.log(result); // [3, 4, 5]
console.log(array); // [1, 2, 3, 4, 5]



기술면접예시

Q5. ~ Q11. source

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점 학생 데이터를 출력

find

  • arr.find(callback[, thisArg])
  • 반환 타입은 찾은 요소의 타입, 없다면 undefinded
  • method는 주어진 판별 함수를 만족하는 첫 번째 요소의 값을 반환
    (원하는 요소를 찾자마자 method를 종료함, 뒤쪽 요소는 관심조차 주지도 않는다)
// 첫 번째 true 값을 반환
const result = students.find((student) => student.score === 90);

console.log(result); // {name: 'C', age: 30, enrolled: treu, score: 90}



Q6. true인 학생 데이터 모두 출력

filter

  • arr.filter(callback(element[, index[, array]])[, thisArg])
  • 배열의 모든 요소를 반복하며 콜백 함수를 실행 후 통과한 요소들로 새로운 배열 리턴
  • 배열에서 어떠한 원소도 통과하지 못하면 빈 배열[]을 반환한다
// true인 모든 값 배열로 반환
const result = students.filter((student) => student.enrolled === true);

console.log(result); // [Stduent, Stduent, Stduent]



Q7. 접수만 들어있는 배열 생성

map

  • arr.map(callback(currentValue[, index[, array]])[, thisArg])
  • 배열의 모든 요소를 반복하며 콜백 함수를 실행 후 새로운 배열 리턴
  • .forEach() 비슷하지만 차이점은 수정된 배열을 리턴(Return) 한다.
    .forEach() 비교하여 처리속도가 느리다.
const result = students.map((student) => student.score);

console.log(result); // [45, 80, 90, 66, 88]



Q8. 50점 미만 학생 유/무 확인

some

  • arr.some(callback[, thisArg])
  • 성능을 위해 조건을 만족하는 값이 발견되면 그 즉시 순회는 중단된다.
// .some()은 배열에 1개 이상 조건이 만족되지 않는 경우
const result = students.some((student) => student.score < 50);

console.log(result); // true

every

  • arr.every(callback[, thisArg])
  • 성능을 위해 조건을 만족하지 않는 값이 발견되면 그 즉시 순회는 중단된다.
// .every()은 모든 배열에 조건이 만족되지 않을 경우
const result2 = students.every((student) => student.score >= !50);

console.log(result2); // true



Q9. 학생들의 평균 점수

reduce

  • arr.reduce(callback[, initialValue])
  • 이 함수는 Array 객체의 ProtoType에 정의되어 있는 고차 함수이다.
  • 가장 중요한 특징은 배열의 값을 한 개로 감소시키는 특징 가지고 있다.
  • map, filter, find 함수로 구현할 수 있는 기능은 모두 reduce 함수로 구현 가능하다.
  • 두 번째 매개변수인 initialValue를 통해서 반환 값을 자유롭게 지정하여 유연하게 사용 가능하다.
  • reduce().reduceRight()의 유일한 차이는 배열의 끝에서부터 시작한다는 것.
const result = students.reduceRight((prev, curr) => prev + curr.score, 0);

console.log(result / students.length); //73.8



Q10. 50점 이상의 학생들의 점수를(배열) 문자열로 반환

함수형 프로그래밍 예제용

const result = students
  .map((student) => student.score)
  .filter((score) => score >= 50)
  .join();

console.log(result); // 80,90,66,88



Q11. 학생들의 점수를(배열) 내림차순 정렬 후 문자열로 반환

sort

  • arr.sort([compareFunction])
  • 기본적으로 오름차순으로 정렬된다.
  • 배열 요소를 문자열로 캐스팅하고 변환된 문자열을 비교하여 순서를 결정한다.
  • 배열의 요소가 undefined인 경우에는 문자열로 변환되지 않는다.
  • 배열의 요소가 undefined인 경우에는 배열의 맨 끝으로 정렬 된다.
const result = students
  .map((student) => student.score)
  .sort((a, b) => b - a)
  .join();

console.log(result); // 90,88,80,65,45
profile
UI 마크업 개발자 장지훈입니다.

0개의 댓글