본문 바로가기
FrontEnd/Javascript

[JS] Javascript의 배열(array)

by pplucy 2021. 1. 19.

 

배열

: 배열은 자바스크립트에서 모든 타입의 변수를 보관하는 자료구조로 자바의 List와 유사하다.

 

 

배열 객체의 메서드

(1)  indexOf() : 배열에서 요소가 위치한 인덱스를 반환하는 메소드

     

    : #search의 value값과 동일한 요소가 배열에 있는지 파악한 뒤 그 인덱스 값을 반환, 이 후

      반환된 인덱스 값이 0이상일 경우 결과값에 해당하는 문자열을 출력한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<div id = "indexof-note" class="note"></div>
<input type = "text" id= "search">
<button onclick = "testIndexOf()">확인하기</button>
<script type="text/javascript">
     function testIndexOf(){
      let indexOfNote = document.querySelector('#indexof-note');
      let keyword = document.querySelector('#search');
      let fruitsArr = ['사과','복숭아','바나나','오렌지','포도'];
      let idx = fruitsArr.indexOf(keyword.value);
                
      if(idx>=0){
        indexOfNote.innerHTML += '당신이 원하는 과일이 있는 인덱스 : ' + idx; 
      }else{
        alert('검색하신 과일이 존재하지 않습니다.');
        //입력창을 비워주세요.
        keyword.value = '';
        //keyword애 focus맞추기
        keyword.focus();
      }
                
  }
cs

 

 

 

(2) concat() : 배열을 결합하여 반환하는 메소드

 

: fruitArr 배열과 fruitArr2 배열을 결합해서 출력한 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<div id = "concat-note" class="note"></div>
 <button onclick = "testConcat()">확인하기</button>
  <script type="text/javascript">
    function testConcat(){
        let concatNote = document.querySelector('#concat-note');
        let fruitArr = ['사과','딸기','바나나'];
        let fruitArr2 = ['귤','포도','수박'];
        let concatArr = fruitArr.concat(fruitArr2);
            
                
        <!-- 객체를 문자로 취급하게 되는 상황에서는 자동적으로 toString을 부르게 된다.-->
        concatNote.innerHTML += 'fruitArr : ' + fruitArr + '<br>';
        concatNote.innerHTML += 'fruitArr2 : ' + fruitArr2 + '<br>';
        concatNote.innerHTML += 'concatArr : ' + concatArr + '<br>';    
                
            }
cs

 

 

 

(3) join() :  배열의 요소들을 문자열로 반환하는 메소드

 

: 해당 배열의 요소들을 그냥 반환하거나 원하는 구분자로 구분지어 반환하는 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
<div id = "join-note" class="note"></div>
 <button onclick = "testJoin()">확인하기</button>
  <script type="text/javascript">
    function testJoin(){
        let joinNote = document.querySelector('#join-note');
        let movieArr = ['해리포터''헝거게임','호빗','나니아연대기'];
                
        let movieTitle = movieArr.join();
        joinNote.innerHTML += 'movieArr.join() : ' + movieTitle + '<br>';
        movieTitle = movieArr.join('/'); //구분자 사용하기
        joinNote.innerHTML += 'movieArr.join() : ' + movieTitle + '<br>';
                
    }
cs

 

 

(4) reverse() : 배열의 순서를 뒤집는 메소드

: 배열의 순서를 reverse를 사용해 뒤집게 되면 이는 원본 배열에 영향을 주기 때문에 원본배열이 뒤집힌 형태로 유지된다.

1
2
3
4
5
6
7
8
9
10
11
12
<div id = "reverse-note" class="note"></div>
 <button onclick = "testReverse()">확인하기</button>
  <script type="text/javascript">
    function testReverse(){
        let reverseNote = document.querySelector('#reverse-note');
                
        let colorArr = [ '빨','주','노','초','파','남','보'];
        reverseNote.innerHTML += 'colorArr : ' + colorArr + '<br>';
        reverseNote.innerHTML += 'colorArr : ' + colorArr.reverse() + '<br>';
        reverseNote.innerHTML += 'colorArr 다시출력 : ' + colorArr + '<br>';
                
    }
cs

 

 

 

 

(5) sort() : 배열의 요소를 순서대로 반환하는 메소드

 

: sort는 함수식과 함께 사용할 수 있다.

 - 오름차순 함수(left, right는 임의로 정한 값)

    function(left, right){

           return left - right;

       }

 - 내림차순 함수

    function(left, right){

           return right - left;

       }

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<div id = "sort-note" class="note"></div>
 <button onclick = "testSort()">확인하기</button>
  <script type="text/javascript">
    function testSort(){
        let sortNote = document.querySelector('#sort-note');
        let numArr = [1054334450123885];
                
        sortNote.innerHTML += 'numArr : ' + numArr + '<br>';
        sortNote.innerHTML += 'numArr.sort(): ' + numArr.sort() + '<br>';
                
        // comepare function을 추가해 정렬 : 숫자를 기준으로 정렬
        // 1. 오름차순 정렬
        sortNote.innerHTML += 'numArr.sort(fn): '
                            + numArr.sort(function(left,right){
                                            return left-right})
                                            + '<br>';
        // 2. 내림차순 정렬
        sortNote.innerHTML += 'numArr.sort(fn): '
                            + numArr.sort(function(left,right){
                                            return right-left})
                                            + '<br>';
                
                
            }
        </script>
        


cs

 

 

 

 

(6) push()  

       - push() :  배열의 맨 뒤의 요소에 추가

       - pop() : 배열의 맨 뒤 요소 제거

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<div id = "push-note" class="note"></div>
 <button onclick = "testPush()">확인하기</button>
  <script type="text/javascript">
    function testPush(){
        let pushNote = document.querySelector('#push-note');
        let aniArr = ['토끼','호랑이','고양이','강아지','팬더'];
                
        pushNote.innerHTML += 'aniArr : ' + aniArr + '<br>';
        aniArr.push('사자');
        pushNote.innerHTML += 'aniArr + 사자: ' + aniArr + '<br>';
        aniArr.pop();
        pushNote.innerHTML += 'aniArr - 사자: ' + aniArr + '<br>';
    }
        
</script>
cs

aniArr - 사자 : pop() 메소드를 사용해 마지막 요소 제거 !

 

 

 

 

 

(7) shift() 

     - unshift() : 배열의 맨 앞에 해당 요소 추가

     - shift() : 배열의 맨 앞의 요소 제거

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<div id = "shift-note" class="note"></div>
 <button onclick = "testShift()">확인하기</button>
  <script type="text/javascript">
    function testShift(){
                
        let shiftNote = document.querySelector('#shift-note');
        let arr = ['야구','축구','볼링','탁구','테니스'];
                
        shiftNote.innerHTML += 'arr : ' + arr +'<br>';
        arr.unshift('농구');
        shiftNote.innerHTML += '농구 + arr : ' + arr +'<br>';
        arr.shift('농구');
        shiftNote.innerHTML += 'arr - 농구 : ' + arr +'<br>';
                
                
    }
cs

 

 

 

 

(8) splice() : 배열의 요소 선택해 잘라내기

 

 : languages.splice(2,3,"python")

    => languages 배열의 2번째 인덱스부터 3개를 자르고 python을 추가하겠다는 뜻

 : 이 메소드는 원본배열에 영향을 미치게 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<div id = "splice-note" class="note"></div>
 <button onclick = "testSplice()">확인하기</button>
  <script type="text/javascript">
    function testSplice(){
        let spliceNote = document.querySelector('#splice-note');
        let languages = ['자바','oracle','HTML','css','javascript''JSP''Servlet'];
                
        spliceNote.innerHTML += 'languages : ' + languages;
                
       
        spliceNote.innerHTML += '<br>languages.splice(2,3,"python") :' + languages.splice(2,3,"python");
        spliceNote.innerHTML += '<br> 원본배열 :' + languages;
                
            }
cs

 

 

 

(9) slice() : 배열의 요소를 선택해 잘라내는 메소드

 

: languages.slice(2,3) 

  => 2번 인덱스 부터 3번 인덱스 앞까지(=2번 인덱스) 자른다는 뜻

 

 * splice와 다르게 slice는 원본배열을 얕은 복사해서 해당 인덱스를 자른 뒤에 그 복사된 배열을 드러내주기 때문에 원본에 영향을 미치지 않는다.

1
2
3
4
5
6
7
8
9
10
11
12
13
<div id = "slice-note" class="note"></div>
 <button onclick = "testSlice()">확인하기</button>
  <script type="text/javascript">
    function testSlice(){
        let sliceNote = document.querySelector('#slice-note');
        let languages = ['자바','oracle','HTML','css','javascript'];
            
        sliceNote.innerHTML += 'languages : ' + languages;
        sliceNote.innerHTML += '<br>languages.slice(2,3) :' + languages.slice(2,3);
        sliceNote.innerHTML += '<br> 원본배열 :' + languages;
                
    }
cs

 

 

 

'FrontEnd > Javascript' 카테고리의 다른 글

[JS] Javascript의 비동기(asynchronous)  (0) 2021.01.22
[JS] Javascript의 함수(Function)  (0) 2021.01.21
[JS] Javascript의 statement  (0) 2021.01.19
[JS] Javascript 의 연산자(operator)  (0) 2021.01.19
[JS] Javascript 타입(type)  (0) 2021.01.19

댓글