JSFiddle - React, Tailwind, and code Playground

by Abdul Ahmad

JavaScript

function compare(a, b) {
	const partsA = getParts(a);
  const partsB = getParts(b);
  
  if (partsA[0] > partsB[0]) return a;
  else if (partsA[0] < partsB[0]) return b;
  
  if (partsA[1] > partsB[1]) return a;
  else if (partsA[1] < partsB[1]) return b;
  
  if (partsA[2] > partsB[2]) return a;
  else if (partsA[2] < partsB[2]) return b;
  else if (partsA[2] === partsB[2]) return b;
}

function getParts(string) {
	const numOfClasses = string.split('.').length - 1;
  const numOfIds = string.split('#').length - 1;
  let numOfElements = 0;
  
  if (!numOfClasses && !numOfIds) numOfElements = string.split(' ');
  
  return [numOfIds, numOfClasses, numOfElements];
}

const result = compare('element #two', 'element .two');
console.log(result);