웹표준,웹접근성(html, html5, css, css3, javascript, jQuery, jQueryMobile, snecha, senchaTouch, php, mobileWebApp)
Array 객체요소 제거 본문
Array 객체요소 제거
Array 객체 메서드에는 특정 요소를 제거하는 메서드가 따로 없다.
splice() 메서드를 사용하여 제거해야하며
프로토타입에 remove()를 추가해서 배열 요소를 제거할수 있다.
Array.prototype.remove = function(index){
this.splice(index,1);
}
Array 객체 요소제거의 잘못된 예)
// Array 생성자 함수 프로토타입에 remove() 메서드 추가
Array.prototype.remove = function(index){
this.splice(index,1);
}
// 숫자 4가지의 값을 가진 배열 num 선언
var num= [80, 90, 200, 300];
// num 배열의 갯수만큼 반복
for(var i=0; i < num.length; i++){
// 100보다 큰 수를 가진 인덱스를 삭제
if(num[i]>100){
num.remove(i)
}
}
// 화면에 출력
console.log(num);
위 출력화면을 보면 100이 넘는 요소를 모두 제거하지 못했다.
이유는 배열의 요소가 제거되면서 인덱스가 앞으로 당겨지기 때문이다.
이러한 문제를 해결하기 위해서는 역 for문을 이용해야 한다.
역 for문을 이용한 Array 객체 요소제거)
// Array 생성자 함수 프로토타입에 remove() 메서드 추가
Array.prototype.remove = function(index){
this.splice(index,1);
}
// 숫자 4가지의 값을 가진 배열 num 선언
var num= [80, 90, 200, 300];
// num 배열의 갯수만큼 뒤에서 부터 반복
for(var i=num.length; i >=0; i--){
// 100보다 큰 수를 가진 인덱스를 삭제
if(num[i] > 100){
num.remove(i);
}
}
// 화면에 출력
console.log(num);
100보다 큰 수를 모두 제거한 것을 볼 수 있다.