Node 를 이용한 개발환경에서 서버 사이드단에 데이터를 가져오다 보면 배열 복사를 해야할때가 빈번하다.
간단한 예제로 배열 복사에 대해서 이야기 하고자 한다.
arr2 =arr1 을 통해 얕은 복사가 이루어지게 되고 arr2 는 arr1 을 참조 하게된다.
이경우 arr2 에 있는 객체가 arr1 에 있는 객체를 참조하고있기때문에 다음과 같이
arr2 객체의 value 값을 바꾸게 되면 arr1 도 따라서 같이 바뀌는것을 확인해볼수있다.
arr2 과 arr1 에 참조가 발생되게 하지않으려면 다음과 같이 push를 이용하는 방법이 있다.
이렇게 구현하는것은 Array 안에 들어있는것이 바로 객체이기 때문이다.
객체는 참조가된다. 그래서 새로 객체명을 정의하고 그안에 벨류값을 꺼내와서 넣었다.
If 를 하지않으면 총 9번이 돌아서 9개의 객체가 생성되기때문에 if 를 걸어줘야한다.
보다 좋은 방법이 있을까? 있다.! Jquery 에 extend 를 활용하면된다.
훨신 간결하지않은가 ?
파리미터는 타겟이 없으므로 {} 하였고 , 기준이될 배열 객체 , 복사될곳에 배열 객체 을 파라미터에 넣어서 구현해줬다.
extend 는 첫번째 파라미터를 생략할수있는데. 깊은복사인지 얕은 복사인지를 설정할수있다.
깊은복사가 기본값이기때문에 생략해서 파라미터를 3개 사용하였다.
깊은복사와 얕은 복사에 대한 내용은 http://www.devpia.com/Maeul/Contents/Detail.aspx?BoardID=18&MAEULNO=8&no=1289&page=29
잘나와 있으니 참고하시길 바란다.
내가 생각하기에 진정한 문제에 대한 고민은 1차적인 해결책을 찾고난 뒤 부터 라고 생각한다.
이렇게 하는것이 현상황에서 최선인가? 이게 최선이라면 나온 해결책으로 문제를 해결하고 더이상 고민하지 않는다.
하지만 현상황에서 이것이 최선이 아니다라면, 더 효율적인 방법을 고려해 봐야한다.
책을 통해서 그리고 사람을 통해서 말이다.
기술은 공유되어야 비로서 가치가 있다고 믿고있고 이를 실천하고자 노력한다. 내주변엔 적어도 이런 사람들로 가득차길 소망한다.
오늘도 고민해본다.. 이것이 최선인가 ?!?
'Javascript > Jquery' 카테고리의 다른 글
.attr() vs .prop() 비교 - 셀렉트박스,라디오박스 (0) | 2016.04.11 |
---|