0과 1 −
를 포함하는 숫자 배열이 있다고 가정해 보겠습니다.const arr = [0, 1, 0, 1];
사용되는 배열에 해당하는 바이너리를 반환하는 배열 함수 toBinary()를 작성해야 합니다.
예를 들어 - 배열이 -
인 경우const arr = [1, 0, 1, 1];
그러면 2진수 1011의 10진수 표현이 11이기 때문에 출력은 11이어야 합니다.
따라서 이 함수에 대한 코드를 작성해 보겠습니다.
방법 1:라이브러리 방법 사용
JavaScript에는 두 개의 인수를 취하는 parseInt() 메서드가 있습니다. 첫 번째는 문자열이고 두 번째는 특정 기수를 나타내는 숫자입니다(예:10진수 기수 10, 이진수 2). 이 함수는 문자열 인수를 구문 분석하고 정수를 반환합니다. 지정된 기수(기수).
우리의 경우 바이너리 배열을 10진수로 변환하기 위해 다음과 같이 parseInt() 함수를 사용할 수 있습니다 -
const arr = [1, 0, 1, 1]; const parseArray = arr => { const binaryString = arr.join(""); return parseInt(binaryString, 2); }; console.log(parseArray(arr));
방법 2:배열 줄이기
이 방법에서 우리는 이진 배열을 반복하고 해당 이진수를 기반으로 10진수를 구성합니다. 왼쪽 시프트 연산자(<<)를 사용하여 매번 누적값을 1비트 왼쪽으로 이동하고 이동된 누적값과 현재 값의 비트별 OR(|)을 반환합니다.
Bitwise Operator −
를 사용하는 이에 대한 코드예시
const arr = [1, 0, 1, 1]; const parseArray = arr => { return arr.reduce((acc, val) => { return (acc << 1) | val; }); }; console.log(parseArray(arr));
출력
콘솔의 출력은 다음과 같습니다. -
11