TIL 4

uoM·2021년 1월 25일
1

CodeSatates

목록 보기
4/7

객체 타입의 순서가있는 자료형이다.
순서가 정해져 있어 순서에 맞춰서 데이터를 추가하거나 뺄 수 있다.

object와 다르게 index value의 쌍을 가지고 있다.

let alph = [ "a", "b", "c" ] // typeof alph "object"

alph[0] // "a"
alph.push("d") // alph === [ "a", "b", "c", "d" ]
alph.pop() // alph === [ "a", "b", "c" ]
Array.isArray(alph) // true

배열은 기존의 string, number 등의 원시타입과 다르게 참조자료형 이다.
때문에, 그 값을 직접 변경할 수 있다.

인덱스를 통해 값을 직접 할당하거나, 메서드(method)를 통해서 array를 조작할 수 있다.

let numArr = [
	[1,2],
	[3,4],
	[5,6],
];

// numArr === [ [1,2], [3,4], [5,6] ];

배열의 인덱스마다 배열을 할당하는것도 가능하다. ⇒ 차원배열로 생각할 수 있다.

배열의 값

  • Index를 통해서 직접 조회가 가능하다. Index는 좌측부터 0으로 시작한다.
  • 조회 하고자 하는 Index가 음수이거나, 배열의 길이보다 크다면 undefined 가 출력된다.
let alph = [ "a", "b", "c" ];

alph[1] // "b"
alph[-1] // undefined
alph[5] // undefined

Method

Array.pop()

let alph = [ "a", "b", "c" ];

alph.pop() // "c"

alph // [ "a", "b" ]

pop()의 리턴 값은 빠져나온 값이다.

⇒ 가장 끝에 있는 요소를 제거한다.

Array.push()

let alph = [ "a", "b", "c" ];

alph.push("d") // 4

console.log(alph) // [ "a", "b", "c", "d" ]

push의 리턴값은 값을 넣은 후의 배열의 길이이다.

⇒ 가장 끝에 배열의 요소를 추가한다.

Array.shfit()

let alph = [ "a", "b", "c" ];

alph.shift() // "a"

console.log(alph)// [ "b", "c", "d" ]

앞에서 부터 원소를 꺼낸다. 결과값은 나온 요소이다.

⇒ 가장 앞의 배열의 요소를 제거한다.

  • Array.unshfit()
let alph = [ "a", "b", "c" ];

alph.unshfit("0") // 5

console.log(alph) // [ "0", "a", "b", "c", "d" ]

가장 앞에 원소를 추가한다. 결과값은 추가한 후 배열의 길이이다.

⇒ 가장 앞에 추가하고자 하는 원소를 전달인자로 넣어준다.

Array.concat(Arr)

let alph1 = [ "a", "b", "c" ];
let alph2 = [ "d", "e", "f" ];

let alphs = alph1.concat(alph2) // [ "a", "b", "c", "d", "e", "f" ]

console.log(alph1) // [ "a", "b", "c" ]
console.log(alph2) // [ "d", "e", "f" ]
console.log(alphs) // [ "a", "b", "c", "d", "e", "f" ]

Array.slice()

let alph = ["a", "b", "c", "d", "e", "f"]

alph.slice(0,3) // ["a", "b", "c"]
alph.slice(3) //  ["c", "d", "e", "f"]

console.log(alph) //  ["a", "b", "c", "d", "e", "f"]

기존 Array를 변경하지 않는 상태에서 인자 start index 부터 end index 앞까지 잘라낸다.(immutable)
전달인자가 하나인 경우는 시작지점으로 간주하고 끝까지 잘라낸다.
string type slice와 같이 음수에대한 처리를 한다.

Slice Method의 음수처리 (배열, 문자열 동일)

  • start arguement가 음수인 경우 빈 배열을 리턴한다.
  • start arguement가 음수이고 크기가 배열의 길이보다 큰 경우 0으로 간주한다.
  • end arguemnet가 음수인 경우 뒤에서 부터 0, -1, -2... 으로 간주한다.
  • start > end 인 경우 빈 배열이 리턴된다.

Array.isArray()

let alph = ["a", "b", "c", "d", "e", "f"]
let strAlph = "abcdef"

typeof alph // "object"
typeof strAlph // "string"

Array.isArray(alph); // true
Array.isArray(strAlph); // false

해당 인자의 배열 여부를 boolean 타입으로 리턴 받을 수 있다. 배열은 타입체크 키워드는 object

라는 결과가 나오기 때문에 Array.isArray() 를 통해서 배열여부를 확인할 수 있다.

알게 된 점

문자열과 배열 모두 사용법이 비슷하다.

다만, 문자열은 변경이 불가능한 값이여서 모든 메서드가 immutable로 작동한다.

배열은 각 매서드에 따라 다르게 작동한다. 원본 배열을 바꿀 수도 있고 아닐수도 있다.

0개의 댓글