[Demo] CheckBox Click When Disabled

[Demo] CheckBox Click When Disabled

by dying_sakura

JavaScript

const players = Array.from({ length: 18 }, (v,k) => ( { level: Math.floor(k / 6) + 1, player: `test-${Math.floor(k/2)+1}` }));


function removeDuplicates(players) {
   return Object.values(players.reduce((acc, curr) => { 
       acc[curr.player] = acc[curr.player] || curr;
       return acc;
   }, {}))
}


const combine = (source) => {
  return source.reduce((acc, curr) => {
    if (acc[curr.level]) {
      const levelArr = acc[curr.level];
      const last = levelArr[levelArr.length - 1];
      if (last.length === 2) {
        levelArr.push([curr])
      } else {
        last.push(curr)
      }
    } else {
      acc[curr.level] = [
        [curr]
      ];
    }
    return acc;
  }, {})
};


console.log("All players:", players);

const uniquePlayers = removeDuplicates(players);

console.log("Unique players:", uniquePlayers);

const matched = Object.values(combine(uniquePlayers)).flatMap(a => a.filter(x => x.length === 2));
const unmatched = Object.values(combine(uniquePlayers)).flatMap(a => a.filter(x => x.length === 1));
console.log("Matched players:", matched);
console.log("Unmatched players:", unmatched);