> 웹 프론트엔드 > JS 튜토리얼 > JavaScript의 forEach 루프 내에서 배열 요소를 수정해도 원래 배열이 변경되지 않는 이유는 무엇입니까?

JavaScript의 forEach 루프 내에서 배열 요소를 수정해도 원래 배열이 변경되지 않는 이유는 무엇입니까?

DDD
풀어 주다: 2024-11-30 22:25:14
원래의
982명이 탐색했습니다.

Why does modifying array elements within a forEach loop in JavaScript not change the original array?

반복 중 배열 값 수정

JavaScript에서 forEach() 메서드는 일반적으로 배열을 반복하고 각 요소에 대해 특정 작업을 수행하는 데 사용됩니다. 그러나 반복 루프 내에서 이러한 요소를 수정하려고 시도하면 원래 값이 유지되는 경우가 많습니다.

다음 예를 고려하세요.

var arr = ["one", "two", "three"];

arr.forEach(function (part) {
  part = "four";
  return "four";
});

alert(arr); // Output: ["one", "two", "three"]
로그인 후 복사

루프 내의 부분에 "4"를 할당하더라도 , arr 배열은 변경되지 않습니다. 이는 forEach() 콜백이 원본 요소에 대한 참조가 아닌 각 요소의 복사본만 받기 때문입니다.

배열 인덱스로 요소 수정

의미 있는 수정을 위해 다음을 활용할 수 있습니다. forEach() 콜백에서 제공하는 인덱스 매개변수입니다. 이 매개변수는 배열에 있는 현재 요소의 인덱스를 나타냅니다.

arr.forEach(function (part, index, theArray) {
  theArray[index] = "hello world";
});
로그인 후 복사

이 경우 theArray는 원래 배열을 참조하며 인덱스 값을 사용하여 해당 요소에 직접 액세스하고 수정할 수 있습니다.

this 매개변수 사용

또는 forEach() 콜백의 this 매개변수를 배열:

arr.forEach(function (part, index) {
  this[index] = "hello world";
}, arr); // Use arr as this
로그인 후 복사

arr을 이 값으로 설정하면 이[인덱스]가 배열 내의 올바른 요소를 가리키는지 확인할 수 있습니다.

올바른 도구 선택

forEach()는 반복과 수정을 허용하지만 특정 용도에 더 적합할 수 있는 다른 배열 프로토타입 방법이 있습니다. 케이스:

  • forEach: 각 요소를 반복하고 작업을 수행하지만 배열을 수정하지는 않습니다.
  • filter: 생성합니다. 특정 조건을 충족하는 요소만 포함하는 새 배열 조건.
  • map: 주어진 함수에 따라 각 요소를 변환하여 새 배열을 생성합니다.
  • some: 요소가 하나 이상 있는지 확인합니다. 배열에서 조건을 만족합니다.
  • every: 다음을 확인합니다. 배열의 모든 요소는 조건을 충족합니다.

작업에 따라 적절한 방법을 선택하면 효율적이고 정확한 배열 조작이 가능합니다.

위 내용은 JavaScript의 forEach 루프 내에서 배열 요소를 수정해도 원래 배열이 변경되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿