본문 바로가기

02. JavaScript/01. 기본개념, 문법 (ES6)

JavaScript_03. 내장 객체_Array

※ 본 내용은 해당 교재를 참고하여 공부한 내용과 본인의 생각을 정리한 글입니다.

https://www.yes24.com/Product/Goods/105608999

 

바닐라 자바스크립트 - 예스24

실무 역량까지 한 번에 잡을 수 있는바닐라 자바스크립트 이론서자바스크립트는 이제 브라우저를 넘어 웹 애플리케이션뿐만 아니라 마이크로 컨트롤러까지 점점 사용하는 곳이 늘어나고 있다.

www.yes24.com

 

 

 배열을 많이 쓰는 편이니 관련 메소드는 알고 있으면 좋다.

 

● toString()

 배열 안의 모든 문자를 쉼표(,)를 이용해 모두 결합해서 하나의 문자열로 반환.

 

● join()

 배열 안의 모든 문자를 파라미터로 지정한 문자를 이용해서 모두 결합해서 하나의 문자열로 반환

 

문자열을 합쳐야 하는 경우 더하기(+)를 이용해서 문자열을 합칠 수도 있지만, 합쳐야 할 문자열이 많은 경우는 더하기를 이용하는 것보다, 배열의 push() 함수를 사용해서 합쳐야 할 문자열을 배열에 넣고, 나중에 한번에 join() 함수를 사용해서 합치는 것이 프로그램 성능 면에서 훨씬 우수하다. 

(예제 코드 참고)

 

● pop()

 배열에서 마지막 데이터를 제거하고, 마지막 데이터를 반환.

 

● push()

 배열에 새로운 요소(데이터, 객체 등)를 추가한다.

 

● shift()

 배열에서 첫 번째 요소를 제거하고, 첫 번째 요소를 반환.

 

● unshift()

 배열의 맨 앞에 요소를 추가하고, 배열의 길이를 반환.

 

● splice()

 새로운 요소를 특정 위치에 추가한다.

 

● concat()

 2개 이상의 배열을 하나의 배열로 결합한다.

 

● slice()

 2개의 파라미터를 사용하며, 첫 번째 파라미터는 시작 인덱스, 두 번째 파라미터는 종료 인덱스(생략가능).

생략하면 시작 인덱스에서 마지막 배열 요소까지 잘라내서 배열 형태로 반환.

<!DOCTYPE html>
<html>

<head>
    <title>Document</title>
</head>

<body>
    <script>
        console.log('=======================toString()=======================');
        var fruits = ["Banana", "Orange", "Apple", "Mango"];
        console.log(fruits);
        console.log(fruits.toString()); // Banana,Orange,Apple,Mango

        console.log('=======================join()=======================');
        var fruits = ["Banana", "Orange", "Apple", "Mango"];
        console.log(fruits.join(" * ")); // Banana * Orange * Apple * Mango

        console.log('=======================pop()=======================');
        var fruits = ["Banana", "Orange", "Apple", "Mango"];
        console.log(fruits.pop()); // x = "Mango"
        console.log(fruits);

        console.log('=======================push()=======================');
        var fruits = ["Banana", "Orange", "Apple", "Mango"];
        console.log(fruits.push("Kiwi")); // "Kiwi"가 fruits 배열에 추가 됩니다.
        console.log(fruits);

        console.log('=======================shift()=======================');
        var fruits = ["Banana", "Orange", "Apple", "Mango"];
        console.log(fruits);
        fruits.shift(); // "Banana"를 fruits 배열에서 제거하고, 반환합니다.
        console.log(fruits.shift());

        console.log('=======================unshift()=======================');
        var fruits = ["Banana", "Orange", "Apple", "Mango"];
        console.log(fruits.unshift("Lemon")); // "Lemon"을 fruits 배열 제일 앞에 추가하고 배열의 길이를 반환합니다.

        console.log('=======================array index=======================');
        var fruits = ["Banana", "Orange", "Apple", "Mango"];
        console.log(fruits);
        fruits[0] = "Kiwi"; // 배열에서 인덱스가 0인 요소인 "Banana"를 "Kiwi"로 변경합니다.
        console.log('fruits[0]="Kiwi"');
        console.log(fruits);

        console.log('=======================splice()=======================');
        var fruits = ["Banana", "Orange", "Apple", "Mango"];
        console.log(fruits);
        console.log('fruits.splice(2, 0, "Lemon", "Kiwi")');
        fruits = fruits.splice(2, 0, "Lemon", "Kiwi")
        console.log(fruits); // [Banana, Orange, Lemon, Kiwi, Apple, Mango]

        console.log('=======================concat()=======================');
        console.log('arr1, arr2, arr3 순서');
        var arr1 = ["Cecilie", "Lone"];
        var arr2 = ["Emil", "Tobias", "Linus"];
        var arr3 = ["Robin", "Morgan"];
        console.log(arr1);
        console.log(arr2);
        console.log(arr3);
        myChildren = arr1.concat(arr2, arr3);
        console.log('arr1.concat(arr2, arr3)');
        console.log(myChildren);

        console.log('=======================slice()=======================');
        var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
        console.log(fruits);
        console.log('fruits.slice(3)');
        console.log(fruits.slice(3)); // [Apple, Mango]
        console.log('fruits.slice(1, 3)');
        console.log(fruits.slice(1, 3)); // [Orange, Lemon]
    </script>
</body>

</html>

 

console

 

● sort()

 배열에 문자형 데이터가 있는 경우 오름차순으로 정렬한다.

<!DOCTYPE html>
<html>

<head>
    <title>Document</title>
</head>

<body>
    <script>

        var fruits = ["Banana", "Orange", "Apple", "Mango"];
        console.log('===================String sort===================');
        console.log(fruits.sort()); // ["Apple", "Banana", "Mango", "Orange"];

        console.log('===================Number sort===================');
        //오름차순 정렬
        var points = [40, 100, 1, 5, 25, 10];
        let result1 = points.sort(function (a, b) {
            return a - b;
        });
        console.log(result1); //[1, 5, 10, 25, 40, 100]

        //숫자 정렬 시 sort 메소드 실행 시 문자처럼 정렬이 된다.
        console.log(points.sort()); //[1, 10, 100, 25, 40, 5]

        //내림차순 정렬
        var points2 = [40, 100, 1, 5, 25, 10];
        let result2 = points2.sort(function (a, b) {
            return b - a;
        });
        console.log(result2);

        console.log('===================etc===================');
        var fruits = ["Banana", "Orange", "Apple", "Mango"];
        console.log(fruits.sort());
        console.log(fruits.reverse());

        var persons = [
            {
                name: "유재석",
                point: 78,
                city: "서울",
            },
            {
                name: "김종국",
                point: 92,
                city: "서울",
            },
            {
                name: "양세찬",
                point: 76,
                city: "제주",
            },
            {
                name: "하하",
                point: 81,
                city: "서울",
            },
        ];
        // sort custom
        let result3 = persons.sort(function (a, b) {
            return a.point > b.point ? -1 : a.point < b.point ? 1 : 0;
        });

        console.log(result3);
    </script>
</body>

</html>

 

console

 

● filter()

 배열에서 특정 조건을 만족하는 배열의 요소만을 찾아서 새로운 배열로 반환.

<!DOCTYPE html>
<html>

<head>
    <title>Document</title>
</head>

<body>
    <script>
        var persons = [
            {
                name: "유재석",
                point: 78,
                city: "서울",
            },
            {
                name: "김종국",
                point: 92,
                city: "서울",
            },
            {
                name: "양세찬",
                point: 76,
                city: "제주",
            },
            {
                name: "하하",
                point: 81,
                city: "서울",
            },
        ];

        var pass = persons.filter(function (person) {
            return person.point > 80;
        });
        console.log('point가 80점 초과한 사람');
        console.log(pass);
    </script>
</body>

</html>

 

console

 

● map()

 배열의 데이터가 Object형일 때, 배열에 담긴 Object를 새로운 형태의 Object로 변환해서 배열로 반환.

<!DOCTYPE html>
<html>

<head>
    <title>Document</title>
</head>

<body>
    <script>
        //map 함수 이해를 돕기위한 예시 코드
        const numbers = [1, 2, 3, 4, 5];

        const squaredWithIndex = numbers.map(function (currentValue, index, array) {
            console.log(`Current Value: ${currentValue}`); //현재 값
            console.log(`Index: ${index}`); //현재 index
            console.log(`Original Array: ${array}`); // 원래 배열(numbers)

            // 현재 요소의 값을 제곱하여 반환
            return currentValue * currentValue;
        });

        console.log(squaredWithIndex);

        var userList = [
            {
                firstName: "재석",
                lastName: "유",
                email: "yu@gmail.com",
            },
            {
                firstName: "종국",
                lastName: "김",
                email: "kim@gmail.com",
            },
            {
                firstName: "세찬",
                lastName: "양",
                email: "yang@gmail.com",
            },
            {
                firstName: "석진",
                lastName: "지",
                email: "ji@gmail.com",
            },
        ];


        var userList2 = userList.map(function (user) {
            //user 파라미터는 데이터를 의미
            return {
                fullName: user.lastName + user.firstName,
                firstName: user.firstName,
                lastName: user.lastName,
                email: user.email,
            };
        });

        console.log(userList2);
    </script>
</body>

</html>

 

console

 

 

● reduce()

 배열에 담긴 데이터를 하나씩 순회하며 callback 함수의 실행 값을 누적하여 결과값을 반환.

주로 배열에 담긴 데이터의 합계를 구할 때 가장 많이 사용한다. callback 함수는 다음과 같이 4개의 매개변수를 가질 수 있다.

 

첫 번째 매개변수 : accumulator (누적 값)

두 번째 매개변수 : currentValue (현재 배열의 요소)

세 번째 매개변수 : currentIndex (인덱스 번호)

네 번째 매개변수 : arr (배열)

 

<!DOCTYPE html>
<html>

<head>
    <title>Document</title>
</head>

<body>
    <script>
        var points = [40, 100, 1, 5, 25, 10];
        var sum = points.reduce(function (total, currentValue) {
            //데이터를 하나씩 순회하며 누적 값에 현재 값 계속 더한다.
            return total + currentValue;
        }, 0);

        console.log(sum); //181
    </script>
</body>

</html>