자바스크립트에서 배열은..
정말 자주 쓰고 유용하다.
그런데 Array(배열)에서 하나의 요소를 삭제하고 싶을땐 어떻게 해야할까?
http://www.w3schools.com/jsref/jsref_obj_array.asp
왜 이 많은 메소드 중에 하나의 요소를 삭제하는 것이 없단 말인가?!
구글신에게 물어보았다.
//Array Remove - By John Resig (MIT Licensed) - http://ejohn.org/blog/javascript-array-remove/
Array.prototype.remove = function(from, to) {
var rest = this.slice((to || from) + 1 || this.length);
this.length = from < 0 ? this.length + from : from;
return this.push.apply(this, rest);
};
오... Array 에 remove 라는 것을 추가하도록 알려주었다.
그런데 왜 이렇게 간단한 소스가 기본으로 제공되지 않는거지? 라는 생각으로 조금 더 찾아봤더니..
방법이 있었다.
그 힌트는 바로 splice !
splice 사용법은
배열.splice(시작점, 길이 [, 추가요소1, ... ,추가요소n] );
시작점을 기준으로 길이만큼 Remove 하고 추가요소들을 추가해주는 메소드
일단 예를 보자.
ex)
var m = ["a", "b", "c", "d"];
m.splice(1, 0, "f", "g");
=> [] 리턴 값은 빈 배열이 리턴되고
=> m = ["a", "f", "g", "b", "c", "d"]
var m = ["a", "b", "c", "d"];
m.splice(1, 2, "f", "g");
=> ["b", "c"]
=> m = ["a", "f", "g", "d"]
즉, 시작점에서부터 길이까지 자른 배열을 리턴해주고 그 시작점부터 추가요소를 넣어준다!
지정한 만큼 뽑아내고 추가요소들을 추가해주는 것이였다.
잘~ 생각해보니..
빼기만하고 추가요소를 안넣으면.................?
결국 remove와 같은것이 아닌가!
그래서 나온 결론...
ex)
var m = ["a", "b", "c", "d"];
m.splice(1, 1);
=> ["b"]
=> m = ["a", "c", "d"]
오우~~~
역시.. remove따위는 필요 없는게로군 ㅎ
잘~된다.
멋져~