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

자릿수 루트 JavaScript에 따라 숫자 정렬

<시간/>

숫자 루트

양의 정수의 자릿수 근은 모든 자릿수의 합으로 정의됩니다.

정수 배열을 취하는 JavaScript 함수를 작성해야 합니다. 함수는 a가 b보다 앞에 오면 a의 자릿수 근이 b의 자릿수 근보다 작거나 같도록 정렬해야 합니다. 두 숫자의 자릿수 근이 같으면 작은 숫자(일반적인 의미에서)가 먼저 와야 합니다.

예를 들어, 4와 13은 동일한 자릿수 루트를 갖지만 4 <13이므로 둘 다 있는 모든 digitRoot 정렬에서 4가 13 앞에 옵니다.

예를 들어 -

입력 배열이 -

인 경우
const arr = [13, 20, 7, 4];

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

const output = [20, 4, 13, 7];

예시

const arr = [13, 20, 7, 4];
const digitSum = (num, sum = 0) => {
   if(num){
      return digitSum(Math.floor(num / 10), sum + (num % 10));
   };
   return sum;
};
const digitalSort = (arr = []) => {
   const sorter = (a, b) => {
      return (digitSum(a) - digitSum(b)) || (a - b);
   };
   arr.sort(sorter);
};
digitalSort(arr);
console.log(arr);

출력

이것은 다음과 같은 출력을 생성합니다 -

[ 20, 4, 13, 7 ]