연구노트/자바스크립트

자바스크립트 Array.prototype 표준 내장 객체2(concat, copyWithin)

생존형수동개발자 2023. 7. 2. 15:49

concat()

concat() 메서드는 인자로 주어진 배열이나 값들을 기존 배열에 합쳐서 새 배열을 반환합니다.

  • 기존배열을 변경하지 않습니다.
  • 추가된 새로운 배열을 반환합니다.
array.concat([value1[, value2[, ...[, valueN]]]])

매개변수

  • 배열 또는 값
  • 만약 value1 ~ valueN 인자를 생략하면 기존배열의 얕은 복사본을 반환.
  • valueN (Optional)

반환값

새로운 Array 객체.

예제

console.log("test start");
let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
let arr3 = ['A', 'B', 'C'];
console.log(JSON.parse(JSON.stringify(arr1)));
console.log(JSON.parse(JSON.stringify(arr2)));
arr1 = arr1.concat(arr2, arr3, [33, 44], "TT");
console.log("processing...");
console.log(arr1);
test start 
(3) [1, 2, 3]
(3) [4, 5, 6]
processing... 
(12) [1, 2, 3, 4, 5, 6, "A", "B", "C", 33, 44, "TT"]

copyWithin()

copyWithin() 메서드는 배열의 일부를 얕게 복사한 뒤, 동일한 배열의 다른 위치에 덮어쓰고 그 배열을 반환합니다. 이 때, 크기(배열의 길이)를 수정하지 않고 반환합니다.

arr.copyWithin(target[, start[, end]])

매개변수

target

복사한 시퀀스(값)를 넣을 위치를 가리키는 0 기반 인덱스. 음수를 지정하면 인덱스를 배열의 끝에서부터 계산합니다.

target이 arr.length보다 크거나 같으면 아무것도 복사하지 않습니다. target이 start 이후라면 복사한 시퀀스를 arr.length에 맞춰 자릅니다.

start (Optional)

복사를 시작할 위치를 가리키는 0 기반 인덱스. 음수를 지정하면 인덱스를 배열의 끝에서부터 계산합니다.

기본값은 0으로, start를 지정하지 않으면 배열의 처음부터 복사합니다.

end (Optional)

복사를 끝낼 위치를 가리키는 0 기반 인덱스. copyWithin은 end 인덱스 이전까지 복사하므로 end 인덱스가 가리키는 요소는 제외합니다. 음수를 지정하면 인덱스를 배열의 끝에서부터 계산합니다.

기본값은 arr.length로, end를 지정하지 않으면 배열의 끝까지 복사합니다.

반환 값

수정한 배열.

예제

console.log([1, 2, 3, 4, 'a', 'b', 7, 8, 9].copyWithin(-2));
console.log([1, 2, 3, 4, 'a', 'b', 7, 8, 9].copyWithin(3));
console.log([1, 2, 3, 4, 'a', 'b', 7, 8, 9].copyWithin(3, 4));
console.log([1, 2, 3, 4, 'a', 'b', 7, 8, 9].copyWithin(3, 5, 7));
(9) [1, 2, 3, 4, "a", "b", 7, 1, 2] //7다음에 1,2가 덮어짐
(9) [1, 2, 3, 1, 2, 3, 4, "a", "b"] //3다음부터 덮어짐
(9) [1, 2, 3, "a", "b", 7, 8, 9, 9] //3다음부터 index(4)='a' 부터 덮어짐
(9) [1, 2, 3, "b", 7, "b", 7, 8, 9] //3다음부터 index(5~7)+'b','7' 이 덮어짐