Ciao, non mi è chiaro cosa intendi per "performante"; questo termine in questo contesto può avere una certa ambiguità.
Può essere inteso come "script più rapido nell'esecuzione" quindi performante a livello di prestazioni, oppure "script più stringato" quindi performante a livello di sintassi e stesura del codice. Le due cose sono spesso divergenti. Parlerei piuttosto di "ottimizzazione" per arrivare ad un buon compromesso tra questi due fattori.
La soluzione che hai trovato mi pare tuttavia abbastanza ottimale, dal momento che parliamo di pochissime righe di codice.
Noto però che la struttura tra i dati in entrata e quelli in uscita è differente. In entrata hai un oggetto con le varie proprietà mentre in uscita, una volta applicato l'ordinamento, hai un array di oggetti.
Bisogna capire quindi quale sia esattamente la tua esigenza.
Se ti interessa mantenere la stessa struttura bisogna rivedere qualcosa.
Ad ogni modo è possibile usare i metodi nativi per iterare/manipolare oggetti ed array, ottenendo anche uno script più stringato; non è detto però che sia più performante a livello di prestazioni rispetto ad una soluzione più ordinaria con l'uso dei cicli.
Certo, in questo caso, data la ridotta quantità di dati da elaborare, la differenza di prestazioni e dell'uso di risorse sarebbe comunque un fattore irrisorio. Suppongo quindi che il tuo "più performante" possa essere inteso come "codice più stringato"; correggimi se sbaglio.
Chiaramente si può risolvere in vari modi; qui una possibile soluzione:
codice:
const orari = {
lunedi: "07:30 - 12:30",
venerdi: "07:30 - 12:30",
mercoledi: "07:30 - 12:30",
giovedi: "07:00 - 12:30",
sabato: "07:30 - 11:45"
};
const orariOrdinatiPerGiorno = ['lunedi', 'martedi', 'mercoledi', 'giovedi', 'venerdi', 'sabato', 'domenica']
.reduce((a, b) => Object.assign(a, orari[b] && {[b]: orari[b]}), {});
console.log(orariOrdinatiPerGiorno);
Fai sapere e chiedi pure se hai bisogno di spiegazioni sul funzionamento.