객체 타입의 순서가있는 자료형이다.
순서가 정해져 있어 순서에 맞춰서 데이터를 추가하거나 뺄 수 있다.
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] ];
배열의 인덱스마다 배열을 할당하는것도 가능하다. ⇒ 차원배열로 생각할 수 있다.
undefined
가 출력된다.let alph = [ "a", "b", "c" ];
alph[1] // "b"
alph[-1] // undefined
alph[5] // undefined
let alph = [ "a", "b", "c" ];
alph.pop() // "c"
alph // [ "a", "b" ]
pop()의 리턴 값은 빠져나온 값이다.
⇒ 가장 끝에 있는 요소를 제거한다.
let alph = [ "a", "b", "c" ];
alph.push("d") // 4
console.log(alph) // [ "a", "b", "c", "d" ]
push의 리턴값은 값을 넣은 후의 배열의 길이이다.
⇒ 가장 끝에 배열의 요소를 추가한다.
let alph = [ "a", "b", "c" ];
alph.shift() // "a"
console.log(alph)// [ "b", "c", "d" ]
앞에서 부터 원소를 꺼낸다. 결과값은 나온 요소이다.
⇒ 가장 앞의 배열의 요소를 제거한다.
let alph = [ "a", "b", "c" ];
alph.unshfit("0") // 5
console.log(alph) // [ "0", "a", "b", "c", "d" ]
가장 앞에 원소를 추가한다. 결과값은 추가한 후 배열의 길이이다.
⇒ 가장 앞에 추가하고자 하는 원소를 전달인자로 넣어준다.
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" ]
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와 같이 음수에대한 처리를 한다.
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로 작동한다.
배열은 각 매서드에 따라 다르게 작동한다. 원본 배열을 바꿀 수도 있고 아닐수도 있다.