• 회원가입
  • 로그인
  • 구글아이디로 로그인

[Basic] JS - Array Method - JS배열메서드

JavaScript Array Methods JS 배열 메서드


시작 전 알아둘 사항

JS 배열에서 순서 색인은 0부터 시작함. 즉, 첫 번째는 0, 두 번째는 1, 세 번째는 2, .........

따라서, 전체 데이터 갯수가 N이라고 할 때, 마지막 데이터의 순서는 N-1이 됨. 





1. 배열 데이터 출력법  - 3가지

  JS에서 모든 객체는 valueOf() 와 toString() 메서드을 갖습니다.
  배열 역시 객체의 일종이며, 배열에서의 두 메서드은 결과값이 같습니다.

① valueOf()

<p id="homzzang"></p>

<script>
var hz = ["HTML", "CSS", "JS", "SQL", "PHP"];
document.getElementById("homzzang").innerHTML = hz.valueOf();
</script>


결과값: HTML,CSS,JS,SQL,PHP



② toString()

<p id="homzzang"></p>

<script>
var hz = ["HTML", "CSS", "JS", "SQL", "PHP"];
document.getElementById("homzzang").innerHTML = hz.toString();
</script>



결과값: HTML,CSS,JS,SQL,PHP



join() 
valueOf()나 toString() 메서드과 달리, join() 메서드은 각 데이터를 특별한 형태로 분리가 가능

아래 예제에서는  *  를 넣었지만, 그 자리에 다른 특수문자들을 넣을 수 있음. (예) | , ☆ .....

<p id="homzzang"></p>

<script>
var hz = ["HTML", "CSS", "JS", "SQL", "PHP"];
document.getElementById("homzzang").innerHTML = hz.join(" * ");
</script>


결과값: HTML * CSS * JS * SQL * PHP
 



2. 배열 (마지막 데이터 삭제 + 마지막에 새 데이터 추가)


① pop() 
배열의
마지막 데이터를 삭제

<button onclick="myFunction()">클릭</button>

<p id="homzzang"></p>

<script>
var hz = ["HTML", "CSS", "JS", "일본어"];
document.getElementById("homzzang").innerHTML = hz;

function myFunction() {
    hz.pop()
    document.getElementById("homzzang").innerHTML = hz;
}
</script>



결과값: HTML,CSS,JS   ※ 클릭할 때마다 끝에 있는 데이터가 하나씩 사라짐.


cf. [주의] 아래처럼 사용할 경우엔, 반대로 마지막 데이터만 남고 모든 데이터가 사라짐.

<p id="homzzang"></p>

<script>
var hz = ["HTML", "CSS", "JS", "일본어"];
document.getElementById("homzzang").innerHTML = hz.pop();
</script>


결과값: 일본어



② push() 
배열의
마지막에 새로운 데이터를 추가

<button onclick="myFunction()">클릭</button>

<p id="homzzang"></p>

<script>
var hz = ["HTML", "CSS", "JS", "SQL"];
document.getElementById("homzzang").innerHTML = hz;

function myFunction() {
    hz.push("PHP")
    document.getElementById("homzzang").innerHTML = hz;
}
</script>



결과값: HTML,CSS,JS,SQL,PHP    ※ 클릭할 때마다 데이터가 추가됨




3. 배열 (처음 데이터 삭제 + 처음에 새 데이터 추가)


① shift() 
배열의
첫 번째 데이터를 삭제 후, 나머지 데이터의 순서를 한 자리씩 앞으로 당김.

<button onclick="myFunction()">클릭</button>

<p id="homzzang"></p>

<script>
var hz = ["일본어", "HTML", "CSS", "JS", "SQL", "PHP"];
document.getElementById("homzzang").innerHTML = hz;

function myFunction() {
    hz.shift();
    document.getElementById("homzzang").innerHTML = hz;
}
</script>


결과값: HTML,CSS,JS,SQL,PHP   ※ 클릭할 때마다 배열의 첫 번째 데이터가 삭제되고, 나머지 데이터 순서가 당겨짐.



② unshift()  
배열의
첫 번째에 새로운 데이터를 추가하고, 기존 데이터의 순서를 한 자리씩 뒤로 밂.
[주의] 익스플로러 8 이하의 하위 브라우저에서는 undefined 에러가 날 수 있음.

<button onclick="myFunction()">클릭</button>

<p id="homzzang"></p>

<script>
var hz = ["CSS", "JS", "SQL", "PHP"];
document.getElementById("homzzang").innerHTML = hz;

function myFunction() {
    hz.unshift("HTML");
    document.getElementById("homzzang").innerHTML = hz;
}
</script>


결과값: HTML,CSS,JS,SQL,PHP   ※ 클릭할 때마다 배열의 처음에 데이터가 추가 됨.




정리
 
 
배열의 첫 번째

 배열의 마지막
 
데이터 삭제

 shift()  pop()
 
데이터 추가

 unshift()  push()



4. 배열의 데이터 바꾸기

(1) 배열의 데이터 색인 번호를 이용 ※ 순서는 0부터 시작. 첫 번째는 0, 두 번째는 1, ......마지막은 N-1

<button onclick="myFunction()">클릭</button>

<p id="homzzang"></p>

<script>
var hz = ["HTML", "CSS", "JS", "SQL", "PHP"];
document.getElementById("homzzang").innerHTML = hz;

function myFunction() {
    hz[2] = "JavaScript";
    document.getElementById("homzzang").innerHTML = hz;
}
</script>


결과값: HTML,CSS,JavaScript,SQL,PHP


(2) length 속성을 이용하면 배열의 데이터 마지막에 쉽게 데이터 추가 가능

<button onclick="myFunction()">클릭</button>

<p id="homzzang"></p>

<script>
var hz = ["HTML", "CSS", "JS", "SQL"];
document.getElementById("homzzang").innerHTML = hz;

function myFunction() {
    hz[hz.length] = "PHP";
    document.getElementById("homzzang").innerHTML = hz;
}
</script>


결과값: HTML,CSS,JS,SQL,PHP



5. 배열의 데이터 지우기
JS 배열 역시 객체의 일종이기 때문에, delete 연산자를 통해 데이터를 삭제 가능합니다.
하지만, delete 연산자 이용해 데이터를 삭제하면, 배열의 중간 색인 번호에 undefined (정의 안 됨) 같은 구멍이 생깁니다.
따라서, 배열의 데이터를 삭제하려면 delete 연산자 대신에 pop()이나 splice() 메서드을 이용해 삭제하도록 합니다.

<button onclick="myFunction()">클릭</button>

<p id="homzzang"></p>

<script>
var hz = ["HTML", "CSS", "JS", "SQL"];
document.getElementById("homzzang").innerHTML = hz;

function myFunction() {
    delete hz[0]; // 배열의 첫 번째 데이터를 삭제
    document.getElementById("homzzang").innerHTML = hz[0]; // 배열의 첫 번째 데이터를 출력
}
</script>


결과값: 
undefined



6. splice() 메서드: 배열에 기존 데이터를 삭제하거나 그대로 둔 채, 새로운 데이터를 추가할 때 사용
   splice(데이터를 넣을 위치, 기존 데이터 삭제할 갯수, 새로 추가할 데이터) 형식으로 사용함.

<button onclick="myFunction()">클릭</button>

<p id="homzzang"></p>

<script>
var hz = ["HTML", "CSS", "JS", "리눅스"];
document.getElementById("homzzang").innerHTML = hz;
function myFunction() {
    hz.splice(3, 0, "SQL", "PHP"); // 4번째 자리를 삭제하지 않고, 그 자리에 SQL과 PHP 문자열 삽입
    document.getElementById("homzzang").innerHTML = hz;
}
</script>


결과값: HTML,CSS,JS,SQL,PHP,리눅스
※ 3 : 새로 추가할 데이터가 들어가야 할 위치. 순서는 0부터 세므로 3은 4번째 위치에 해당함. 
※ 0 : 삭제할 갯수. 0이므로 기존의 데이터를 삭제하지 않고 그대로 둠. 만약, 1이라면 4번째 데이터를 삭제함.
※ "SQL", "PHP" : 새로 추가할 데이터. 만약, 추가할 데이터가 없다면 안 써도 무방함.


[예제]

<button onclick="myFunction()">클릭</button>

<p id="homzzang"></p>

<script>
var hz = ["HTML", "CSS", "JS", "리눅스", "일본어"];
document.getElementById("homzzang").innerHTML = hz;
function myFunction() {
    hz.splice(3, 2, "SQL", "PHP"); // 4번째 데이터부터 2개를 삭제하고, 새로 SQL과 PHP 문자열 데이터를 추가
    document.getElementById("homzzang").innerHTML = hz;
}
</script>


결과값: HTML,CSS,JS,SQL,PHP


splice() 메서드을 이용하면 배열의 색인 번호에 구멍을 안 남기고 기존 데이터를 삭제 가능함.
즉, 앞서 설명한 것처럼, delete 연산자를 이용하면 색인 번호에 구멍이 생기는데, splice() 메서드은 색인 번호 에러가 안 남.

<button onclick="myFunction()">클릭</button>

<p id="homzzang"></p>

<script>
var hz = ["HTML", "CSS", "JS", "SQL" , "PHP", "일본어", "리눅스"];
document.getElementById("homzzang").innerHTML = hz;
function myFunction() {
    hz.splice(5, 1); // 배열의 6번째 데이터부터 1개의 데이터를 삭제
    document.getElementById("homzzang").innerHTML = hz[5]; // 배열의 6번째 데이터를 출력
}
</script>


결과값: 리눅스    ※ delete 연산자를 이용해 데이터 삭제하면 색인 번호의 구멍이 생기나, splice() 메서드은 구멍 안 생김.



7. sort() 메서드: 배열의 데이터를 알파벳 순서로 정렬  ※ 배열의 데이터가 문자열일 때 사용

<button onclick="myFunction()">클릭</button>

<p id="homzzang"></p>

<script>
var hz = ["HTML", "CSS", "JS", "SQL", "PHP"];
document.getElementById("homzzang").innerHTML = hz;

function myFunction() {
    hz.sort(); // 배열의 데이터를 알파벳 순서로 정렬
    document.getElementById("homzzang").innerHTML = hz;
}
</script>



결과값: CSS,HTML,JS,PHP,SQL


8. reverse() 메서드: sort() 메서드 뒤에 reverse() 메서드을 함께 사용하면, 배열의 데이터를 알파벳 역순으로 정렬 가능.

<button onclick="myFunction()">클릭</button>

<p id="homzzang"></p>

<script>
var hz = ["HTML", "CSS", "JS", "SQL", "PHP"];
document.getElementById("homzzang").innerHTML = hz;

function myFunction() {
    hz.sort(); // 데이터를 알파벳 순서로 정렬
    hz.reverse(); // 데이터를 역순으로 정렬
    document.getElementById("homzzang").innerHTML = hz;
}
</script>


결과값: SQL,PHP,JS,HTML,CSS



reverse() 메서드을 단독으로 사용하면 현재 나열된 배열의 데이터를 역순으로 정렬시킴.

<button onclick="myFunction()">클릭</button>

<p id="homzzang"></p>

<script>
var hz = ["HTML", "CSS", "JS", "SQL", "PHP"];
document.getElementById("homzzang").innerHTML = hz;

function myFunction() {
    hz.reverse(); // 데이터를 역순으로 정렬
    document.getElementById("homzzang").innerHTML = hz;
}
</script>



결과값: PHP,SQL,JS,CSS,HTML



9. 배열 데이터가 숫자일 경우 정렬  

(1) sort(function(a, b){return a-b}) : 작은 숫자에서 큰 숫자 순으로 정렬 (= 오름차순 정렬)

<button onclick="myFunction()">클릭</button>

<p id="homzzang"></p>

<script>
var hz = [44, 33, 6, 100, 25, 8];
document.getElementById("homzzang").innerHTML = hz;    

function myFunction() {
    hz.sort(function(a, b){return a-b}); // 작은 숫자에서 큰 숫자 순으로 정렬
    document.getElementById("homzzang").innerHTML = hz;
}
</script>



결과값: 6,8,25,33,44,100



(2) sort(function(a, b){return b-a}) : 큰 숫자에서 작은 숫자 순으로 정렬 (= 내림차순 정렬)

<button onclick="myFunction()">클릭</button>

<p id="homzzang"></p>

<script>
var hz = [44, 33, 6, 100, 25, 8];
document.getElementById("homzzang").innerHTML = hz;    

function myFunction() {
    hz.sort(function(a, b){return b-a});
    document.getElementById("homzzang").innerHTML = hz;
}
</script>



결과값: 100,44,33,25,8,6



[참고]
배열의 데이터가 숫자 (예: 2와 11)일 경우, sort() 메서드으로 정렬시키면 11, 2 순으로 정렬 됨. 즉, 11을 2보다 작게 인식

<button onclick="myFunction()">클릭</button>

<p id="homzzang"></p>

<script>
var hz = [2, 11];
document.getElementById("homzzang").innerHTML = hz;    

function myFunction() {
    hz.sort(); // 알파벳 순으로 정렬
    document.getElementById("homzzang").innerHTML = hz;
}
</script>


결과값: 11,2



10. 비교 함수: function(a, b){return a-b} 과 function(a, b){return b-a} 의미

function(a, b){return a-b} : 음수, 0, 양수 순으로 정렬시키라는 의미 (= 오름차순 정렬)  (예) -30, 0, 40

function(a, b){return b-a} : 양수, 0, 음수 순으로 정렬시키라는 의미 (= 내림차순 정렬)  (예) 40, 0, -30


좀 더 구체적으로 설명하자면,

sort(function(a, b){return a-b}) : 오름차순 (= 작은 숫자에서 큰 숫자 순)으로 정렬. 즉, (음수, 0, 양수) 순으로 정렬
sort(function(a, b){return b-a}) : 내림차순 (= 큰 숫자에서 작은 숫자 순)으로 정렬. 즉, (양수, 0, 음수) 순으로 정렬

a: 작은 값, b: 큰값

30과 40을 비교해 정렬시킬 경우, sort() 메서드은 function(a,b) 함수를 호출해서, 여기에 30과 40을 넣습니다.
함수는 30 - 40 연산을 계산 후, - 10을 반환합니다. 정렬 함수는 30을 40보다 작은 값으로 정렬하게 됩니다.



11. 가장 큰 숫자와 가장 작은 숫자 찾는 법

(1) 가장 큰 숫자 찾는 법

<p><span id="homzzang"></span></p>

<script>
var hz = [44, 33, 6, 100, 25, 8];
hz.sort(function(a, b){return b-a}); // 숫자를 내림차순으로 정렬
document.getElementById("homzzang").innerHTML = hz[0]; // 첫 번째 데이터를 출력
</script>


결과값: 100


(2) 가장 작은 숫자 찾는 법

<p><span id="homzzang"></span></p>

<script>
var hz = [44, 33, 6, 100, 25, 8];
hz.sort(function(a, b){return a-b});
document.getElementById("homzzang").innerHTML = hz[0];
</script>


결과값: 6



12. concat() 메서드

(1) concat() 메서드은 2개 이상의 배열을 결합해 새로운 배열을 만들 때 사용.

<button onclick="myFunction()">클릭</button>

<p id="homzzang"></p>

<script>
function myFunction() {
    var hz1 = ["HTML", "CSS", "JS"]; // 배열1
    var hz2 = ["SQL", "PHP", "리눅스"]; // 배열2
    var all = hz1.concat(hz2); // 배열1에 배열2를 결합
    document.getElementById("homzzang").innerHTML = all; // 결합된 배열을 출력
}
</script>


결과값: HTML,CSS,JS,SQL,PHP,리눅스


(2) concat() 메서드은 2개 뿐만 아니라, 그 이상의 배열도 하나로 결합 가능합니다. (즉, 2개 이상의 배열도 독립변수로 가능)

<button onclick="myFunction()">클릭</button>

<p id="homzzang"></p>

<script>
function myFunction() {
    var arr1 = ["HTML", "CSS", "JS"];
    var arr2 = ["SQL", "PHP"];
    var arr3 = ["jQuery", "BOOTSTRAP"];
    document.getElementById("homzzang").innerHTML =
    arr1.concat(arr2, arr3);
}
</script>


결과값: HTML,CSS,JS,SQL,PHP,jQuery,BOOTSTRAP



13. slice() 메서드
slice(배열의 몇 번째부터, 맨 앞에서부터 몇 개까지) 잘라냄.  
(예) slice(A,B) : 앞에서 A번째부터 시작해, 맨 앞에서부터 B개까지 자름.  
                   A: 배열의 순서이므로 0부터 시작, B는 갯수이므로 1부터 시작.

<button onclick="myFunction()">클릭</button>

<p id="homzzang"></p>

<script>
function myFunction() {
    var hz = ["HTML", "CSS", "JS", "SQL", "PHP"];
    var sv = hz.slice(3,5); // 배열의 4번째인 SQL부터 시작해, 맨 처음부터 시작해 5개까지.
    document.getElementById("homzzang").innerHTML = sv;
}
</script>


결과값: SQL,PHP



14. 배열에 관한 더 자세한 건 나중에 다룰 예정.
방문 감사합니다. (즐겨찾기 등록: Ctrl + D)

분류 제목
Basic JS - Date Method - JS날짜메서드
Basic JS - Array - JS배열 ★★★★★
Basic JS - Array Method - JS배열메서드
Basic JS - Sorting Array - JS배열정렬
Basic JS - Booleans() 메서드 - JS참거짓판단 (= JS참거짓메서드 = JS블린메서드 = JS불린즈메…
Basic JS - Comparison and Logical Operator - JS비교연산자 / JS논리연산자
Basic JS - if...else 조건문 구문 ★ (= 이프 엘스 조건문 = 이프문) ※ 시간 조건문
Basic JS - Switch 조건문 구문 (= 스위치문 = 스위치조건문)
Basic JS - for반복문 ★★★★★ - (JS포반복문 = for문 = JS포문) ※ 가변 배열키
Basic JS - While 반복문 구문 (= While문 = While반복문 = 와일문 = 와일반복문)
Basic JS - Break - 반복문중단 (= 브레이크) ★ / Continue - 반복문건너뛰기 (= 컨티뉴) ★…
Basic JS - Type Conversion - 데이터타입변환 (= 데이터유형변환 = 데이터타입변경 = 데이터유형변…
Basic JS - Bitwise Operations -
Basic JS - Regular Expressions -
Basic JS - Errors - Throw and Try to Catch (에러 처리 구문)
Basic JS - Debugging (디버깅/디버그) - (에러/오류) 찾기/제거 방법
Basic JS - Hoisting (호이스팅) - 변수선언끌어올리기 (= 변수선언위치변경)
Basic JS - Use Strict - 엄격모드 ★★★
Basic JS - Style Guide and Coding Conventions -
Basic JS - Best Practices (올바른코딩)
2/67
목록
찾아주셔서 감사합니다. Since 2012