배열

이성은·2022년 11월 3일
0

배열

  • 배열은 순서가 있는값
  • 값 = 요소 (element)
  • 순서 = 인덱스 (index), 0부터 번호를 매긴다.
let myNumber = [73, 98, 86, 61, 96];
 myNumber[3] // 61
 myNumber[3] = 200; // myNumber라는 배열의 3번째 인덱스 값을 200으로 변경

let myNumber = [[13,30], [73,8], [44, 17]]; //2차원 배열
myNumber[1] // [73, 8]
myNumber[1][0] // 73

배열 메서드

  • arr.length : 배열 길이 반환한다
  • arr.push(값) : mutable, 배열 끝에 새로운 element 추가, 변경된 배열의 길이를 반환한다.
  • arr.pop() : mutable, 배열의 마지막 element 삭제하고, 삭제된 element를 반환한다.
  • arr.shift() : mutable,배열 제일 앞의 element 삭제하고, 삭제된 element를 반환한다.
  • arr.unshift(값) : mutable,배열 제일 앞에 element 삽입. 변경된 배열의 길이를 반환한다.
  • Array.isArray() : mutable,타입이 배열임을 확인한다.
  • arr.splice(start, count, item) : 배열의 요소를 삭제, 교체, 추가
    • Return value : 제거한 요소를 담은 배열 반환, 제거하지 않으면 빈 배열 반환
    • start : 변경 시작 인덱스, 음수이면 역순으로 조회
    • count : 삭제할 요소의 수, 생략하거나 남은 배열 길이보다 값이 크면 전체 삭제,
      새로운 값을 추가하려면 0 입력
    • item : 추가할 요소, 여러개 입력가능, 생략하면 제거만 함
splice(start)
splice(start, deleteCount)
splice(start, deleteCount, item1)
splice(start, deleteCount, item1, item2, itemN)

const myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
const removed = myFish.splice(2, 0, 'drum', 'guitar');
// myFish is ["angel", "clown", "drum", "guitar", "mandarin", "sturgeon"]
// removed is [], no elements removed

const myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon'];
const removed = myFish.splice(3, 1);
// myFish is ["angel", "clown", "drum", "sturgeon"]
// removed is ["mandarin"]

const myFish = ['angel', 'clown', 'drum', 'sturgeon'];
const removed = myFish.splice(2, 1, 'trumpet');
// myFish is ["angel", "clown", "trumpet", "sturgeon"]
// removed is ["drum"]

const myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
const removed = myFish.splice(-2, 1);

// myFish is ["angel", "clown", "sturgeon"]
// removed is ["mandarin"]
  • arr.join(값) : immutable, 배열의 모든 요소를 연결해 하나의 문자열로 만든다.
const a = ["Wind", "Water", "Fire"];
a.join(); // 'Wind,Water,Fire'
a.join(", "); // 'Wind, Water, Fire'
a.join(" + "); // 'Wind + Water + Fire'
a.join(""); // 'WindWaterFire'
  • arr.slice(start, end) : immutable, start부터 end까지 인덱스를 잘라낸다.
  • arr.concat() : immutabl,인자로 주어진 배열이나 값들을 기존 배열에 합쳐서 새 배열을 반환한다. 추가된 새로운 배열을 반환.
const alpha = ['a', 'b', 'c'];
const numeric = [1, 2, 3];
alpha.concat(numeric);
// 결과: ['a', 'b', 'c', 1, 2, 3]

const num1 = [1, 2, 3];
const num2 = [4, 5, 6];
const num3 = [7, 8, 9];
num1.concat(num2, num3);
// 결과: [1, 2, 3, 4, 5, 6, 7, 8, 9]
  • str.split():immutable,값을 기준으로 요소를 나눈 배열을 반환한다.
  • arr.indexOf(값) : 배열의 전달인자 값이 위치한 index 값을 반환하고, 없으면 -1 반환한다.
  • arr.includes(값) : 배열의 전달인자 값의 유무를 boolean 값으로 반환한다.
  • arr.sort() : 배열을 정렬하여 반환
// sort 배열 오름차순 정렬
arr.sort((a, b) => a - b)

// sort 배열 내림차순 정렬
arr.sort((a, b) => b - a)

배열의 길이와 인덱스를 활용하여 배열 내부에 있는 모든 요소를 순회할 수 있다.

function arrToString(arr) {
    let result = 0;
    for (let i = 0; i < arr.length; i++) {
        if(i % 2 === 0) {
            result = result + arr[i];
        }
    }
    return result;
}

모든 요소를 순회할 때는 for of문을 사용한다.

function arrToString(arr) {
    let result = 0;
    for (let el of arr) {
        if(i % 2 === 0) {
            result = result + el;
        }
    }
    return result;
}

얕은 복사

  • 객체를 직접 대입하는 경우 참조에 의한 할당이 이루어지므로 둘은 같은 데이터(주소)를 갖음
  • 두 객체가 같은 데이터(주소)를 갖고 있고 같은 주소를 참조하는 것
  • 객체의 참조 복사 객체(배열 포함)의 경우 = 를 이용하여 복사하면 참조 복사만 가능함

깊은 복사(deep copy)

  • 자료형의 값 복사
  • 값을 완전히 복사하는 것
  • = 이용하여 복사하면 두 변수가 완전히 독립성을 갖는 것
profile
함께 일하는 프론트엔드 개발자 이성은입니다🐥

0개의 댓글