Array – (2) APIs

알아두면 유용할만한 Array API들에 대해 정리해본다.

참고로 vscode 상에서 command + click으로 함수의 정의 및 사용방법을 자세히 알 수 있으니 참고하면 좋을 듯 하다.

또, api를 가져다 쓸때 항상 command + click으로 함수가 어떻게 정의되었는지, 어떤 값을 인자로 전달하고 어떤 값을 리턴해주는지 항상 확인하는 습관을 들이는게 중요할 것 같다

// join() : make a string out of an array
{
  const fruits = ['apple', 'banana', 'orange'];
  const result = fruits.join('/'); // 구분자 입력, 생략 가능
  console.log(result); //'apple/banana/orange'
}

// split()
{
  const fruits = ['apple, banana, orange'];
  fruits.split(','); //구분자, 몇 개까지 자를지 선택가능
  console.log(result);
}

// reverse()
{
  const array = [1,2,3,4,5];
  const result = array.reverse();
  console.log(array); // [5,4,3,2,1]
}

//slice()
{
  const array = [1,2,3,4,5];
  const result = array.slice(2,5); 
  console.log(result); //[3,4,5]
  console.log(array) //[1,2,3,4,5]
}

// find()
// 콜백함수 조건을 만족하는 요소 반환
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),
];
// find a student with the score 90
const result = students.find((student) => student.score === 90; // C return);


// filter ()
// make an array of enrolled students
// 해당 콜백함수 조건을 만족하는 요소를 반환
const result = students.filter((student) => student.enrolled);
console.log(result); // A,C,E return

// map()
// make an array containing only the students' scores
// 배열안에 들어있는 모든 요소들을 같이 전달한 콜백함수를 호출하면서 다른 방식의 데이터를 만들어줌 
{
  const result = students.map((student) => student.score * 2);
  console.log(result); //[90,160,180,132,176]
}

// some() 
// check if there is a student with the score lower than 50
// 배열의 요소 중에서 콜백 함수 조건이 True가 되는 요소가 있는지 없는지 검사
{
  const result = students.some((student) => student.score < 50);
  console.log(result); // true
}

// every()
// 배열의 요소 모두가 콜백 함수의 조건을 만족해야 True를 리턴
{
  const result = students.every((student) => student.score < 50);
}

// reduce()
// compute students' average score
// 전달하는 콜백함수 안에서 누적된 값을 리턴함
// prev 는 이전에 콜백함수에 리턴된 값이 전달받고, curr 는 배열의 아이템을 순차적으로 전달받는다.

{
  const result = students.reduce((prev, curr) => prev + curr.score);  // 369
  console.log(result / students.length) // 73.8  (다 더해진 값)
} 

// make a string containing all the scores
{
  const result = students.map((student) => student.score) // 학생 점수만 맵핑
.filter((score) => score >= 50) //50점 이상인 것 추출
.join();  //새로운 배열로 만듬
// 학생들 점수 반환 -> 50 점 이상 필터링 -> 조인
  console.log(result); // '45, 80, 90, 66, 88'
}

// sorted in ascending order
{
  const.result = students.map((student) => student.score)
.sort((a,b) => a - b) // 리턴 받은 스코어를 sort를 이용하여 낮은 순으로 정렬
.join(); //string 변환
  console.log(result); // '45,66,80,88,90'
}