var arr = ["One ", "Two","Three"];
var arrto = arr;
arrto[1] = "test";
document.writeln("배열의 원래 값: " arr "< br />");//내보내기: 배열의 원래 값: One,test,Three
document.writeln("배열의 새 값: " arrto "
위와 같은 직접 할당 방식은 얕은 복사일 때가 많습니다. 사실 우리가 원하는 것은 arr의 값이 그대로 유지되는 것입니다.
방법 1: js 슬라이스 함수
배열의 경우 객체의 슬라이스 함수인
은 배열의 세그먼트를 반환합니다. (아직 배열임)
arrayObj.slice(start, [end])
매개변수
arrayObj
필수입니다. 배열 개체입니다.
시작
필수입니다. arrayObj에 지정된 부분의 시작 요소는 0부터 시작하는 인덱스입니다.
종료
선택사항. arrayObj에 지정된 부분의 끝 요소는 0부터 시작하는 인덱스입니다.
설명
slice 메소드는 arrayObj의 지정된 부분을 포함하는 Array 객체를 반환합니다.
slice 메소드는 end에 지정된 요소까지 복사하지만 포함하지는 않습니다. start가 음수이면 length start로 처리됩니다. 여기서 length는 배열의 길이입니다. end가 음수이면 length end로 처리됩니다. 여기서 length는 배열의 길이입니다. end가 생략되면 슬라이스 메서드는 arrayObj의 끝까지 복사됩니다. start 앞에 end가 나타나면 새 배열에 요소가 복사되지 않습니다.
예:
var arr = ["하나","둘","셋"];
var arrtoo = arr.slice(0);
arrtoo[1] = "지도 설정";
document.writeln("배열의 원래 값: " arr "
");//내보내기: 배열의 원래 값: One,Two,Three
document.writeln("The 배열의 새 값: " arrtoo "
");//내보내기: 배열의 새 값: One,set Map,Three
방법 2: js concat 방법
concat() 메소드는 두 개 이상의 배열을 연결하는 데 사용됩니다.
이 메서드는 기존 배열을 변경하지 않고 연결된 배열의 복사본만 반환합니다.
구문
arrayObject.concat(arrayX,arrayX,...,arrayX)
설명
새 배열을 반환합니다. 배열은 모든 arrayX 매개변수를 arrayObject에 추가하여 생성됩니다. concat()에 대한 인수가 배열이면 배열이 아닌 배열의 요소가 추가됩니다.
var arr = ["One","Two","Three"];
예:
var arrtooo = arr.concat();
arrtooo[1] = "set Map To";
document.writeln(" 배열의 원본 값: " arr "
");//내보내기: 배열의 원래 값: One,Two,Three
document.writeln("배열의 새 값: " arrtooo "
");//내보내기: 배열의 새 값: One,set Map To,Three