[Javascript] Array Method(3) - find, sort

안셩·2024년 8월 1일

복습내용

목록 보기
10/27

매개변수로 콜백함수가 들어가는 메서드

이전 글(forEach, map, filter)에 이어 find, sort 정리

1) find

  • find(찾다), filter(거르다) : 의미 비슷. 95% 일치.
  • find는 조건에 만족하는 제일 첫 번째 값만 반환
  • filter는 조건에 만족하는 배열을 반환

(예제1) 회원명부에서 find를 이용하여 여자인 첫 번째 회원을 찾아보세요.

const 회원명부 = [
    {
      이름: "홍길동",
      나이: 25,
      성별: "male",
    },
    {
      이름: "홍길순",
      나이: 30,
      성별: "female",
    },
    {
      이름: "홍길자",
      나이: 40,
      성별: "female",
    },
  ];

답 1.

const filtered회원명부 = 회원명부.find(function (person) {
  if (person.성별 === "female") {
    return true;
  }
});
console.log(filtered회원명부);

답 2. (답 1)에서 if문의 조건이 true로 return 되는거랑 동일하여 더 간단하게 아래처럼 작성할 수 있다.

const filtered회원명부 = 회원명부.find(function (person) {
  return person.성별 === "female";
});
console.log(filtered회원명부);

2) sort

  • 정렬

  • 특징
    (1) 원본배열 영향 있음

    const arr = ["김민수", "최지철", "박현준"];
    const t = arr.sort();
    console.log("arr=>", arr); // arr=> [ '김민수', '박현준', '최지철' ]
    console.log("t=>", t); // t=> [ '김민수', '박현준', '최지철' ]
    ``

    (2) sort도 callback함수를 가진다.
    (3) 이 callback함수는 인자(input) 2개를 갖는다.
    (4) 이 callback함수의 return에 필요한 것은 '숫자'
    (5) 숫자로 이루어진 배열을 정렬할 때는 b-a 가능
    (6) 문자로 이루어진 배열을 정렬할 때는 localeCompare 필요

(예제1) 숫자 배열을 내림차순 또는 오름차순 정렬

const 원본배열 = [4, 10, 5, 20, 2];
원본배열.sort((a, b) => b-a); // <내림차순>
console.log(원본배열); // [ 20, 10, 5, 4, 2 ]
원본배열.sort((a, b) => a-b); // <오름차순>
console.log(원본배열); // [ 2, 4, 5, 10, 20 ]

(예제2) 문자 배열을 오름차순 정렬
: sort의 콜백함 수 안에 'localeCompare'문을 return하여 문자를 비교할 수 있다.

const 원본배열 = ["choco", "banana", "kiwi", "apple"];
const result = 원본배열.sort(function (a, b) {
    return a.localeCompare(b);
})
console.log(result); // [ 'apple', 'banana', 'choco', 'kiwi' ]

(예제3)

function sortArray(arr) {
    // 여기에 sort를 사용하여 작성하세요
};  
  // 예시 출력
  console.log(sortArray([3, 1, 4, 1, 5, 9])); // 출력: [1, 1, 3, 4, 5, 9]

예제3 - 답

const result = arr.sort(function (인자1, 인자2) {
    return 인자1 - 인자2;
});
return result;

(예제4)

function sortArray2(arr) {
    // 여기에 sort를 사용하여 작성하세요
}
// 예시 출력
console.log(sortArray2(["포도", "사과", "바나나"])); // 출력: ['바나나', '사과', '포도']

예제4 - 답

const result = arr.sort(function (인자1, 인자2) {
    return 인자1.localeCompare(인자2);
});
return result;
profile
24.07.15 프론트엔드 개발 첫 걸음

0개의 댓글