Я просто использую карту приоритетов для каждого типа шага, чтобы использовать ее в функции сравнения.
var steps = [
{ name: 'Package', value: 3 },
{ name: 'Assemble', value: 1 },
{ name: 'Ship', value: 7 },
{ name: 'Preprocess', value: 9 },
{ name: 'Paint', value: 5 }
];
var stepPrecedenceMap = new Map([["Preprocess", 1], ["Paint", 2], ["Assemble", 3], ["Package", 4], ["Ship", 5]])
console.log(
steps.sort((stepA, stepB) => {
return stepPrecedenceMap.get(stepA.name) - stepPrecedenceMap.get(stepB.name)
}));