[JavaScript] 배열(Array)의 내장매서드 some, every, sort, reverse

iberis2·2023년 1월 12일
0

some

배열.some((요소, 인덱스, 배열) => 동작);
조건을 만족하는 요소가 1개이상 있으면 true 를 리턴한다.

const numbers = [1, 3, 5, 7, 9];


const someReturn = numbers.some((el, i) => {
  console.log(i); 
  return el > 5;
}); // 0, 1, 2, 3 (조건을 만족하는 요소가 나올 때까지 순회한다.)

console.log(someReturn); //true

every

배열.every((요소, 인덱스, 배열) => 동작);
모든 요소가 조건을 만족하면 true를 리턴한다.
즉, 조건을 만족하지 않는 요소가 1개라도 있으면 false를 리턴하고 반복(순회)을 종료한다.

const everyReturn = numbers.every((el, i) => {
  console.log(i); 
  return el > 5;
}); // 0 (조건을 만족하지 않는 요소가 나오면 종료)

console.log(everyReturn); // false

💡 [] 빈 배열에서는 반복 없이 바로 some은 false, every는 true를 리턴한다.

const empty = [];

const emptySome = empty.some((el, i) => {
  console.log(`some: ${i}`);
  return el > 5;
}); // 반복(순회)하지 않음

console.log(emptySome); // false


const emptyEvery = empty.every((el, i) => {
  console.log(`every: ${i}`);
  return el > 5;
});  // 반복(순회)하지 않음

console.log(emptyEvery); // true

sort

배열.sort((a, b) => a-b)
배열을 유니코드에 정의된 문자열 순서에 따라 정렬한다.

const letters = ['D', 'C', 'E', 'B', 'A'];
const numbers = [1, 10, 4, 21, 36000];

letters.sort();
numbers.sort();

console.log(letters); // (5) ["A", "B", "C", "D", "E"]
console.log(numbers); // (5) [1, 10, 21, 36000, 4]

숫자를 오름차순 또는 내림차순으로 정렬하기 위해서는 콜백함수를 지정해주어야 한다.

콜백함수가 리턴하는 값이 0보다 작을 경우, a가 b보다 앞에 오도록 정렬하고,
콜백함수가 리턴하는 값이 0보다 클 경우, b가 a보다 앞에 오도록 정렬한다.
만약 0을 리턴하면, a와 b의 순서를 변경하지 않는다.

const numbers = [1, 10, 4, 21, 36000];

// 오름차순 정렬
numbers.sort((a, b) => a - b);
console.log(numbers); // (5) [1, 4, 10, 21, 36000]

// 내림차순 정렬
numbers.sort((a, b) => b - a);
console.log(numbers); // (5) [36000, 21, 10, 4, 1]

💡 메소드를 실행하는 원본 배열의 요소들을 정렬한다.
즉, 한 번 정렬 후에는 정렬하기 전의 순서로 다시 되돌릴 수 없으니, 이전 배열이 필요한 경우 미리 다른 변수에 복사해두어야 한다.

reverse

배열.reverse();
원본 배열의 요소들을 순서를 뒤집는다.
(배열을 복사하여 리턴하는 것이 아닌, 원본 배열을 뒤집는 것 주의)

별도의 파라미터가 존재하지 않고, 메소드를 호출해주기만 하면 배열의 순서가 뒤집힌다.

const letters = ['a', 'c', 'b'];
const numbers = [421, 721, 353];

letters.reverse();
numbers.reverse();

console.log(letters); // (3) ["b", "c", "a"]
console.log(numbers); // (3) [353, 721, 421]
profile
React, Next.js, TypeScript 로 개발 중인 프론트엔드 개발자

0개의 댓글