Попробуйте это,
x = [
{ name: '#' },
{ name: '0' },
{ name: '1' },
{ name: '3' },
{ name: '6' },
{ name: 'A' },
{ name: 'a' },
{ name: 'B' },
];
function calcSortAlg(str) {
let num = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],
sym = ['@', '#', '$', '~', '`', '!', '%', '^', '&', '*', '(', ')', '_', '-', '=', '+', '|', '\\', '[', '{', '}', ']', '\'', '"', ';', ':', '<', '>', ',', '.'];
return str.split('').map(x => sym.includes(x) ? 2 : num.includes(x) ? 1 : 0).reduce((a, v) => a + v, 0);
}
x.sort((a, b) => calcSortAlg(b.name) - calcSortAlg(a.name))
выходы,
[
{ name: '#' },
{ name: '0' },
{ name: '1' },
{ name: '3' },
{ name: '6' },
{ name: 'A' },
{ name: 'a' },
{ name: 'B' },
]