Back to the JavaScript

배열 Array / push pop shift unshift / for in / join

Backcoder 2022. 7. 28. 21:03

[배열]  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 구문 으로 뽑아줘야 한다.