Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript 배열에서 숫자의 부호를 반전하는 방법

JavaScript 프로그래밍을 하다 보면 양수와 음수가 섞여 있는 배열의 모든 숫자 부호를 한 번에 뒤집어야 하는 경우가 있습니다. 예를 들어 양수는 동일한 크기의 음수로, 음수는 동일한 크기의 양수로 변환하는 작업입니다. 이 글에서는 원본 배열을 직접 수정(in-place)하는 방식으로 이 문제를 해결하는 JavaScript 함수를 작성해 보겠습니다.

핵심 아이디어

숫자의 부호를 반전시키는 가장 간단한 방법은 해당 숫자에 -1을 곱하는 것입니다. 예를 들어 12에 -1을 곱하면 -12가 되고, -43에 -1을 곱하면 43이 됩니다. 따라서 배열의 모든 요소를 순회하면서 각 요소에 -1을 곱해주면 됩니다.

forEach를 사용한 구현

아래 코드는 forEach 메서드를 사용하여 배열을 제자리에서 변경하는 예제입니다.

const arr = [12, 5, 3, -1, 54, -43, -2, 34, -1, 4, -4];

const changeSign = arr => {
  arr.forEach((el, ind) => {
    arr[ind] *= -1;
  });
};

changeSign(arr);
console.log(arr);

출력 결과

콘솔에 출력되는 결과는 다음과 같습니다.

[
  -12, -5, -3, 1, -54,
  43, 2, -34, 1, -4,
  4
]

모든 양수가 음수로, 모든 음수가 양수로 성공적으로 변경된 것을 확인할 수 있습니다.

map을 사용한 대안

forEach 방식은 원본 배열 자체를 변경합니다. 만약 원본 배열은 그대로 두고 새로운 배열을 만들고 싶다면 map 메서드를 사용하는 것이 더 적합합니다.

const original = [12, 5, 3, -1, 54, -43, -2, 34, -1, 4, -4];
const reversed = original.map(num => -num);

console.log(reversed); // [-12, -5, -3, 1, -54, 43, 2, -34, 1, -4, 4]
console.log(original); // [12, 5, 3, -1, 54, -43, -2, 34, -1, 4, -4] (원본 유지)

정리

  • 배열을 직접 수정해야 한다면 forEach와 인덱스 접근(arr[ind] *= -1)을 사용하세요.
  • 원본을 유지하고 새 배열이 필요하다면 map(num => -num)을 사용하는 것이 깔끔합니다.

두 방법 모두 시간 복잡도는 O(n)으로 배열의 길이에 비례하여 선형적으로 실행되므로, 상황에 맞게 선택하여 사용하면 됩니다.