JavaScript/methods

[JavaScript] with 사용법 Array.prototype.with()

머지?는 병합입니다 2024. 8. 25. 16:16

 

2023년 7월에 추가된 메서드로

배열의 특정 인덱스의 값을 변경한 새로운 배열을 반환.
원본 배열은 변경되지 않는다.

 

 

1. 구문

 arrayInstance.with(index, value) 
 // index: 변경하려는 요소의 인덱스
 // value: 새로 할당할 값

 

 

2. 반환값 

 

지정된 인덱스의 요소가 새 값으로 대체된 새로운 배열

 

3. 예시

   const arr = [1, 2, 3, 4, 5];
   console.log(arr.with(2, 6)); // [1, 2, 6, 4, 5]
   console.log(arr); // [1, 2, 3, 4, 5] (원본 배열은 변경되지 않음)

 

4. 특징

 

  • 음수 인덱스 사용 가능 (배열 끝에서부터 계산)
  • 희소 배열(sparse array)에 사용하면 빈 슬롯을 undefined로 채움
    • 배열의 일관성을 유지하고 예측 가능한 동작을 보장하여 예기치 않은 버그를 방지할 수 있다.
   const sparseArray = [1, , , 4, 5]; // 배열안에 빈 값이 있는 배열이 희소배열
   const newArray = sparseArray.with(2, 3);
   
   console.log(sparseArray); // [1, empty × 2, 4, 5]
   console.log(newArray);    // [1, undefined, 3, 4, 5]
  • 메서드 체이닝에 유용함
    • 새로운 배열을 만들어 반환하므로 기존에 있던 map , filter, reduce 함수들과 함께 쓰기 편하다
const 초기배열 = [1, 2, 3, 4, 5];

const 결과 = 초기배열
  .with(1, 10)       // 인덱스 1의 값을 10으로 변경
  .with(3, 20)       // 인덱스 3의 값을 20으로 변경
  .map(x => x * 2)   // 모든 요소를 2배로
  .filter(x => x > 20) // 20보다 큰 값만 필터링
  .reduce((acc, cur) => acc + cur, 0); // 합계 계산

console.log(결과); // 80
console.log(초기배열); // [1, 2, 3, 4, 5] (원본 배열은 변경되지 않음)

 

 

출처 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/with