Computer >> Máy Tính >  >> Lập trình >> Javascript

Tạo Xếp hạng với sự kết hợp của các chuỗi trong JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript nhận vào bất kỳ số lượng mảng số nào.

Ví dụ:Nếu các mảng là -

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

Sau đó, đầu ra phải là -

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
}

Ví dụ

Mã cho điều này sẽ là -

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));

Đầu ra

Đầu ra trong bảng điều khiển -

{
   '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
}