>웹 프론트엔드 >JS 튜토리얼 >forEach 루프 내에서 배열 값을 어떻게 수정합니까?

forEach 루프 내에서 배열 값을 어떻게 수정합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-11 06:50:02997검색

How do I modify array values within a forEach loop?

forEach를 사용하여 배열 값 수정

forEach 메서드를 사용하여 배열을 반복할 때 배열의 요소를 수정하려는 상황에 직면하는 것이 일반적입니다. 그러나 콜백 내에서 직접 새 값을 할당하려고 시도한다고 해서 원래 배열에 항상 영향을 미치는 것은 아닙니다.

예기치 않은 동작

다음 코드를 고려하세요.

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

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

alert(arr); // Output: "one,two,three"

콜백 내에서 할당하면 원래 배열 arr이 원래 값을 반환합니다. 이는 forEach가 콜백 함수에 대한 배열 요소의 얕은 복사본을 생성하기 때문에 발생합니다.

쓰기 액세스 권한 부여

forEach 반복에서 배열 요소를 수정하려면 원본 배열을 다음과 같이 전달해야 합니다. 추가 매개변수. 이를 통해 콜백 내에서 배열 자체에 직접 액세스하고 수정할 수 있습니다.

arr.forEach(function(part, index, theArray) {
  theArray[index] = "hello world";
});

theArray[index]를 사용하면 원래 배열 요소를 덮어쓸 수 있습니다.

이를 대안으로 사용

또는 forEach의 두 번째 인수를 사용하여 콜백 내에서 this 값을 설정할 수 있습니다. 이를 원래 배열로 설정하면 this[index]를 사용하여 요소를 직접 수정할 수 있습니다.

arr.forEach(function(part, index) {
  this[index] = "hello world";
}, arr); // Use arr as this

방법 선택

두 접근 방식 모두 반복 중에 배열 요소를 수정할 수 있습니다. 둘 중 하나를 선택하는 것은 선호도에 따라 다릅니다.

추가 어레이 유틸리티

forEach는 Array 프로토타입에서 제공하는 여러 어레이 유틸리티 중 하나라는 점을 언급할 가치가 있습니다. 일반적으로 사용되는 기타 유틸리티는 다음과 같습니다.

  • filter: 특정 조건을 충족하는 요소가 포함된 새 배열을 만듭니다.
  • map: 기존 배열의 각 요소를 변환하여 새 배열을 만듭니다.
  • some: 배열의 요소 중 하나 이상이 특정 조건을 충족하는지 확인합니다.
  • every: 다음을 확인합니다. 배열의 모든 요소가 특정 조건을 충족합니다.
  • find: 특정 조건을 충족하는 배열의 첫 번째 요소를 반환합니다.

위 내용은 forEach 루프 내에서 배열 값을 어떻게 수정합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.