배열 Array / push pop shift unshift / for in / join
[배열] Array
(자바에서 배열은 정적인 크기
동일타입 데이터만 저장 )
JavaScript
=> 동적인크기
=> 모든타입 데이터 저장
( ArrayList랑 유사 )
[ 값 집어넣기 ]
1. 하나하나 넣기
var a = [ ];
- 크기 안정하고 이렇게 생성 가능 (동적)
a[0] = 1;
a[1] = "java";
a[0] = 10; => 오버라이딩
a[99] = 99;
=> 순서대로 넣을 필요없이 원하는 index에 넣을 수 있다.
a.length => 100 (비어도 길이로는 인정)
<push>
a.push(100);
: 배열의 가장 끝에 추가
=> a[100] = 100;
=> 계속 push로만 넣으면, 빈값없이 집어넣을 수 있다
<pop>
a.pop( );
: 현재 배열의 가장 끝을 삭제
=> a[100] = 100; 삭제됨
<unshift>
a.unshift("first");
: 현재 배열의 가장 첫 인덱스에 추가
=> a[0] ==> first;
=> 배열 한칸 씩 뒤로 밀림
<shift>
a.shift( );
: 현재 배열의 가장 첫 인덱스 삭제
=> a[0] = first 값 삭제.
=> 다시 [1] 인덱스가 [0] 인덱스로 옴
2. 배열 literal 값으로 집어넣기 ( 객체 선언하듯이 )
var a = [ 1, "java", true, function(){}, {id:xx, name:xx} ];
- 함수, 객체까지 모든 타입 다 들어감
- 함수는 함수구문 그대로 출력
- 객체는 toString 정의 안해두면 [object Object] 출력
[toString 구현]
1. JSON 버전
toString : function(){return this.id + " : " + this.name;}
이렇게 함수 정의한걸
당장 그 객체안에 프로펄티로 넣어두면
let A = { id : 100, name : "june", toString : function(){ return this.id + " , " + this.name;} };
이 객체값을 for 문으로 뽑을 때,
그 toStirng 리턴 값으로 뽑힌다.
2. 생성자 버전
function board(num, title, content){
this.num = num;
this.title = title;
this.content = content;
this.toString = function(){
return "번호 : " + this.num + ", 제목 : " + this.title + ", 내용 : " + this.content
};
};
- 매개변수에는 명시하지 않음
( 클래스에서는 원래 생성자가 아니라, 클래스 밑에서 따로 정의하는데,
JS는 클래스가 없으니까, 그냥 슬쩍 생성자 쪽 밑에 끼워넣기 하는 것 )
3. 배열 생성자로 값넣기
( ArrayList 와 유사 )
let arr = new Array(2, 3, 4, 5);
=> [2, 3, 4, 5]
- 근데 값을 하나만 주면
let arr = new Array( 2 );
=> 배열 개수(length)를 의미하게 된다.
( 음수 오면 오류 )
- 함수는 마찬가지로 사용
arr.push/pop/unshift/shift/join
---
[ 값 뽑기 ]
1. [ for문 ]
for(var i = 0; i<a.length; i++){
document.write(a[i] + "<br>");}
-undefined 도 다 뽑는다.
2. [ for in 반복문 ]
for( v in a ){
document.write( v + " : " + a[v] + "<br>");}
=> a 배열에서 v (index)가 있는동안,
a[ v ], 즉 a 배열의 v번째값을 를 뽑아줘.
0 : 값1
1 : 값 2 .. .
-undefined는 무시하고 뽑는다.
(아예 출력 X )
3. [ join 메소드 ]
document.write( a.join( ) );
- a 배열의 값을 다 뽑아준다. (한줄쭉나열)
document.write( a.join("<br>" ));
join에 반복돌때 추가할 구분자같은거 적어주면 그렇게 출력가능
- 줄구분하며 출력
- " " 띄어쓰기로 구분하며 출력
- undefined 는 빈값으로 뽑는다.
( 줄구분 하면 빈값으로 줄만 내려감 )
4. [ forEach 구문 ]
a 배열
a.forEach( function( v ) { document.write( v ); } );
- undefined 무시하고 뽑아준다.
< 희소배열 >
: 중간에 배열 index 비어있는(undefined) 배열
=> 뽑을 때, undefined 무시하고 뽑아주는
for in 구문 혹은 foreach 구문 으로 뽑아줘야 한다.