Eveningstar

[배열] 본문

Javascript

[배열]

두루루루루 2018. 12. 27. 23:47

1. 배열 리터럴로 생성하기


- 배열 리터럴은 쉼표로 구분한 값을 대괄호로 묶어서 표현


var fruit = [ 'apple', 'grape', 'banana' ];


대괄호 안의 부분이 배열 리터럴이며, 배열 값 하나를 배열 요소라고 함.

배열 요소는 왼쪽부터 0, 1, 2 등의 번호가 매겨진다. 이를 요소번호 또는 인덱스라고 함.


자바스크립트의 배열은 객체 타입, 배열을 변수에 대입하면 배열의 찹조가 변수에 저장됨


배열 리터럴 안에 배열 요소를 작성하지 않으면 빈 배열이 생성됨


var fruit = [ ];


배열 리터럴 요소의 값을 생략하면 요소는 생성되지 않음


var fruit = [ 'apple',     , 'banana' ];


배열 요소는 모든 타입의 값이 올수 있다.



2.length 프로퍼티 = 배열길이

length는 배열요소의 최대 인덱스 값 +1


배열 길이가 배열 요소의 갯수를 뜻하나 그렇지 않은 경우도 있음

length 프로퍼티에 현재의 배열 요소 개수보다 작고 0보다 큰 정수 값을 대입하면 배열 길이가 줄어듬.

배열 길이를 넘는 인덱스 번호에 할당된 배열 요소는 삭제 됨


var a = [ 1,2,3,4 ];

a.length = 2;

console.log(a);


3. Array 생성자로 생성하기


var evens = new Array(2, 4, 6, 8);


Array 생성자의 인수가 한 개고 그 값이 양의 정수면 인수는 배열 길이를 뜻하므로 배열이 그 길이 만큼 생성됨



var x = new Array(3);

console.log(x.length); // 3


인수가 한개이고 그 값이 양의 정수가 아니면 오류 발생


4. 배열 요소의 참조


특정 인덱스의 요소는 대괄호 연산자를 이용해 읽거나 쓸 수 있다.

배열 요소 하나는 변수 하나로 사용 가능, 배열요소는 모든 타입의 데이터를 할당 할 수 있으며 프로그램에서 참조 가능


x[2] -> x의 3번째 요소


5. 배열은 객체

Array 객체는 배열의 인덱스를 문자열로 변환해서 그것을 프로퍼티로 이용함. 배열에 대괄호 연산자를 사용하는 것은 객체에 대괄호 연산자를 사용하는 것과 마찬가지, 배열의 요소 번호로 숫자 값 대신 문자열 사용이 가능


var a = [ "A", "B", "C", "D"];

console.log(a[2]); //c


ECMA6에서는 TypedArray가 추가됨




6. 배열 요소의 추가, 삭제


1)


var a = [ "A", "B", "C" ];

a[3] = "D";


2) push 메서드


var a = [ "A", "B", "C" ];

a.push("D");


3) delete 메서드

var a = [ "A", "B", "C" ];

delete a[1];

console.log(a); // [ "A", undefined, "C", "D" ]


요소는 삭제되나 프로퍼티값은 바뀌지 않음



7.희소배열


배열에 요소를 추가하거나 제거하면 인덱스가 0부터 시작되지 않는 배열이 만들어짐. 이러한 배열을 희소배열이라고 함.(undefined가 포함된 배열)


이 때 희소배열의 길이는 배열 요소의 개수보다 큼(undefined 포함해서 계산)


8. 배열요소가 있는 지 확인하기


for/in문 사용 or hsaOwnProperty 메서드 사용


for (var i in a) console.log(i);


a.hasOwnProperty("3");



출처 : 모던자바스크립트 입문 / 길벗 / 이소 히로시

https://www.gilbut.co.kr/book/view?bookcode=BN001980


'Javascript' 카테고리의 다른 글

객체, 객체의 속성  (0) 2019.10.03
[연산자]  (0) 2018.12.29
[객체] 생성자, 내장객체  (0) 2018.12.27
[객체와 배열, 함수의 기초]  (0) 2018.12.25
[ajax] 비동기 통신(1)  (0) 2018.10.22
Comments