Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 해당 숫자 다음에 더 작은 숫자 세기

<시간/>

문제

Numbers 배열을 첫 번째이자 유일한 인수로 사용하는 JavaScript 함수를 작성해야 합니다.

우리 함수는 입력 배열을 기반으로 새 배열을 준비해야 합니다. 그리고 이 새 배열의 각 해당 요소는 원래 배열의 해당 요소보다 작은 요소의 개수여야 합니다.

예를 들어, 함수에 대한 입력이 -

인 경우
const arr = [4, 7, 1, 4, 7, 5, 3, 8, 9];

그러면 출력은 다음과 같아야 합니다. -

const output = [2, 4, 0, 1, 2, 1, 0, 0, 0];

출력 설명:

오른쪽에 있는 4보다 작은 숫자는 2(1 및 3)이고 7의 경우 4(1, 4, 5, 3) 등입니다.

예시

이에 대한 코드는 -

const arr = [4, 7, 1, 4, 7, 5, 3, 8, 9];
const countSmaller = (array = [], num) => array.reduce((acc, val) => {
   if(val < num){
      acc++;
   };
   return acc;
}, 0);
const smallerArray = (arr = []) => {
   const res = [];
   for(let i = 0; i < arr.length; i++){
      const el = arr[i];
      res[i] = countSmaller(arr.slice(i, arr.length), el);
   };
   return res;
};
console.log(smallerArray(arr));

출력

콘솔의 출력은 다음과 같습니다. -

[ 2, 4, 0, 1, 2, 1, 0, 0, 0 ]