[JavaScript] Array APIs 정리

4 minute read

JavaScript Array APIs

1. join(separator? : string): string;

배열의 모든 요소를 연결해 하나의 문자열을 만든다.

const fruits = ['apple', 'banana', 'orange'];
const result = fruits.join(',');
console.log(result); //apple,banana,orange

2. split(separator: string | RegExp, limit?: number): string[ ]

String 객체를 지정한 구분자를 이용하여 여러 개의 문자열로 나누어, 배열에 담아서 반환한다

const fruits = "apple,banana,orange";
const result = fruits.split(',');
console.log(result);//['apple', 'banana', 'orange'];

3. reverse( ): T[ ];

배열의 순서를 반전한다. 첫 번째 요소는 마지막 요소가 되며, 마지막 요소는 첫 번째 요소가 된다.

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

reverse() 를 사용하면 반환된 배열과 원본 배열 모두 순서가 반전된다.

4. slice(start?: number, end?: number): T[ ];

어떤 배열의 start 부터 end 까지(end 미포함)에 대한 얕은 복사본을 새로운 배열 객체로 반환한다. 원본 배열은 바뀌지 않는다.

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];

splice와 의 차이 splice(start: number, deleteCount?: number): number[ ]
splice( )는 원본 배열의 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경하는 것이다.

5. find(predicate( value:T, index: number, obj: T[ ]) => unknown, thisArg?: any): T | undefined;

또는
find<S extends T>(predicate: (this: void, value: T, index: number, obj: T[ ]) => value is S, thisArg?: any): S | undefined;
주어진 판별 함수를 만족하는 첫 번째 요소의 값을 반환한다. 그런 요소가 없으면 undefined를 반환한다.

const 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, true, 66),
    new Student('E', 18, true, 88),
];

//점수가 90점인 학생을 출력
const result = students.find((student) => student.score === 90);
console.log(result); // Student {name: "C", age: 30. enrolled: true, score: 90 }

6. filter(callbackfn: (value: T, index: number, array: T[ ]) => unknown, thisArg?: any): T[ ];

또는
filter<S extends T>(callbackfn: (value: T, index: number, array: T[]) => value is S, thisArg?: any): S[];
주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환한다.

const 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, true, 66),
    new Student('E', 18, true, 88),
];

//enrolled가 true인 학생을 출력
const result = students.filter((student) => student.enrolled);
console.log(result);

7. map<U>(callbackfn: (value: T, index: number, array: T[ ]) => U, thisArg?: any): U[ ];

배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환 한다.

const 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, true, 66),
    new Student('E', 18, true, 88),
];

//모든 학생의 score를 출력
const result = students.map((student) => student.score);
console.log(result);

8. some(callbackfn: (value: T, index: number, array: T[ ]) => unknown, thisArg?: any): boolean;

배열 안의 어떤 요소라도 주어진 판별함수를 통과하는지를 테스트 한다. boolean 값을 반환한다.

const 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, true, 66),
    new Student('E', 18, true, 88),
];

//some은 하나라도 만족하면 true 반환
const result = students.some((student) => student.score < 50);
console.log(result);

// every는 모두 충족해야 true 반환
const result2 = students.every((student) => student.score >= 50);
console.log(result2);

9. reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[ ]) => T, initialValue?: T): T;

배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환한다. => 원하는 시작점 부터 모든 요소를 반복하면서 어떤 값을 누적할 때 사용할 수 있다.

const 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, true, 66),
    new Student('E', 18, true, 88),
];

// 평균 score 출력
const result = students.reduce((prev, curr) => prev + curr.score, 0);
console.log(result / students.length);

.reduceRight() 는 마지막 요소부터 누적한다.

10. sort(compareFn?: (a: T, b: T) => number): this;

배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환한다. 정렬은 stable sort가 아닐 수 있다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따른다.

const 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, true, 66),
    new Student('E', 18, true, 88),
];

//작은  부터 정렬
const result = students
    .sort((a,b) => b - a)
console.log(result);

11. api를 여러개 묶어서 사용

여러 api를 묶어서 사용할 수 있다.

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

함수형 프로그래밍 이라고도 한다.

Leave a comment