Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tạo xếp hạng với tổ hợp chuỗi trong JavaScript

Chúng ta cần viết hàm JavaScript nhận bất kỳ số lượng mảng số nào. Hàm trả về đối tượng bản đồ tần suất cho biết mỗi phần tử xuất hiện bao nhiêu lần kiểm tra trong tất cả mảng.

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

Thì đầu ra sẽ 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 việc này:

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

Kết quả trên console:

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