검색
검색
공개 노트 검색
회원가입로그인
틸노트 자바스크립트

배열

숫자, 불리언, 문자열은 자료 구조를 구성하는 최소 단위이다.

하지만 정보는 하나 이상의 단위로 이루어지기 때문에 값을 그룹화해서 복잡한 구조를 만들 수 있다.

배열은 기본적인 자료 구조 중 하나이다.

데이터 세트

데이터의 모음을 처리할 수 있는 데이터 유형을 배열이라고 하며 대괄호 사이에 콤마로 구분한 값을 나열한다.

let listOfNumbers = [2, 3, 5, 7, 11];
console.log(listOfNumbers[2]);
// -> 5

여기서 표현식 바로 다음에 대괄호 쌍을 이용하여 인덱스로 해당 요소를 찾을 수 있다. 인덱스는 첫번째 요소가 0부터 시작하는 전통적인 표현방식이다.

속성에 접근하기

자바스크립트에서 속성에 접근하는데 사용하는 두 가지 방법은 점과 대괄호를 사용하는 것이다.

value.x 와 value[x] 는 값의 속성에 접근할 때 사용된다.

하지만 이 둘의 차이점은 value[x]는 표현식 x를 평가하고 그 결과를 문자열로 변환해서 해당값을 가져오고 value.x 는 해당값을 바로 가져온다.

점 표기법에서는 유효한 바인딩 이름만 사용할 수 있기 때문에 대괄호 표기법으로 값을 가져와야하는 경우가 있다. 예를 들어 숫자 2를 가져오려면 점 바인딩에서는 숫자 요소를 사용할 수 없기 때문에 value[2] 의 형태로 값을 가져와야 한다.

배열 메서드

배열의 끝에 요소를 추가하기

todoList.push(‘pigs‘);

배열의 끝의 요소를 제거하고 그 요소를 반환하기

todoList.pop(‘rabbit‘)

배열의 시작부분의 첫번째 요소를 제거하고 제거된 요소를 반환하기

todoList.shift(‘tomato‘);

배열의 첫번째 요소를 배열의 맨 앞쪽에 추가하고 새로운 길이를 반환하기

todoList.unshift(‘apple‘)

배열의 특정 값을 검색하고 요청한 값을 찾으면 해당 인덱스를 반환하기

todoList.indexOf(‘apple‘);

요청한 값이 없으면 -1을 반환한다.

배열 자르기 slice : 시작과 마지막 인덱스를 사용해서 둘 사이에 있는 요소를 배열로 반환한다. 마지막 인덱스의 값은 포함하지 않는다.

console.log([0, 1, 2, 3, 4].slice(2, 4));
// -> [2, 3]

시작 인덱스와 마지막 인덱스는 포함하거나 생략할 수 있다. 마지막 인덱스를 생략하면 시작 인덱스 이후 모든 요소를 반환한다. 시작 인덱스까지 생략하면 전체 배열을 복사한다.

console.log([0, 1, 2, 3, 4].slice(2));
// -> [2, 3, 4]

concat : 배열을 묶어서 새 배열을 만들기

console.log([0, 1].concat([2, 3]));
// -> [0, 1, 2, 3]

배열과 유사한 문자열 메서드

slice : 해당 문자열을 잘라서 반환

indexOf : 해당 문자의 인덱스를 반환. 두 개 이상의 문자열도 검색 가능.

console.log("coconuts").slice(4, 7);
// -> nut
console.log("coconut".indexOf("u"));
// -> 5
console.log("one two three").indexOf("ee");
// -> 11

trim : 문자열의 시작과 끝에서 공백 (공백과 개행 문자, 탭 등)을 제거한다.

split : 특정 문자열이 나타날 때마다 해당 문자열을 분할하고, join 메서드로 다시 결합 가능.

let sentence = ['startup service note'];
let words = sentence.split(" ");
console.log(words);
// -> ['startup', 'service', 'note'];
console.log(words.join(". "));
// -> startup. service. note

나머지 매개변수

함수는 여러 개의 인수를 받아서 사용할 수 있다. 주어진 모든 인수를 계산하려면 마지막 매개 변수 앞에 점을 3개를 넣는다.

function max (...numbers) {
  let result = -Infinity;
  for (let number of numbers) {
    if(number > result) result = number;
  }
  return result;
}
console.log(max(4, 1, 9, -2));
// -> 9

이와 유사하게 3점 표기법과 배열 인수를 사용해 함수 호출이 가능하다.

let numbers = [5, 1, 7];
console.log(max(...numbers));
// -> 7

이 때 중요한 것은 함수 호출 시 배열을 “분산“하여 각 요소를 인수로 전달한다는 것이다.

이는 대괄호 배열 표기법에서 3점 연산자를 사용하면 특정 배열을 새 배열에 분산시킬 수 있는 것과 유사하다.

let word = ["never", "fully"];
console.log(["will", ...words, "understand"]);
// -> ["will", "never", "fully", "understand"]

이렇게 나머지 연산자로 함수나 배열에 배열 인수를 분산시킬 수 있다는 것을 알게 되면 굉장히 요긴하게 쓸 수 있다.


공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기