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

JavaScript에서 문자열 조합으로 순위 생성

<시간/>

우리는 숫자 배열을 여러 개 받는 JavaScript 함수를 작성해야 합니다. 그런 다음 함수는 각 요소가 모든 배열을 확인하는 데 나타난 횟수를 나타내는 빈도 맵을 반환하는 개체를 반환해야 합니다.

예를 들어, 배열이 −

인 경우
const a = [23, 45, 21], b = [45, 23], c = [21, 32], d = [23], e= [32], f=[50, 54];

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

const output = {
   "21": 2,
   "23": 3,
   "32": 2,
   "45": 2,
   "52": 1,
   "54": 1,
   "23, 45": 2,
   "23, 45, 21": 1,
   "21, 32": 1,
   "50 : 54": 1,
   "50" : 1
}

예시

이에 대한 코드는 -

const a = [23, 45, 21], b = [45, 23], c = [21, 32], d = [23], e= [32], f=[50, 54];
const findMatch = arr => {
   let result = [];
   const pick = (i, t) => {
      if (i === arr.length) {
         t.length && result.push(t);
         return;
      };
      pick(i + 1, t.concat(arr[i]));
      pick(i + 1, t);
   };
   pick(0, []);
   return result;
};
const sorter = (a, b) => a - b;
const mergeCombination = (arr, obj) => {
   findMatch(arr.sort(sorter)).forEach(el => {
      return obj[el.join(', ')] = (obj[el.join(', ')] || 0) + 1
   });
};
const buildFinalCombinations = (...arrs) => {
   const obj = {};
   for(let i = 0; i < arrs.length; i++){
      mergeCombination(arrs[i], obj);
   };
   return obj;
};
console.log(buildFinalCombinations(a, b, c, d, e, f));

출력

콘솔의 출력 -

{
   '21': 2,
   '23': 3,
   '32': 2,
   '45': 2,
   '50': 1,
   '54': 1,
   '21, 23, 45': 1,
   '21, 23': 1,
   '21, 45': 1,
   '23, 45': 2,
   '21, 32': 1,
   '50, 54': 1
}