Попробуйте что-то подобное:
Использование forEach
:
const object = {
"18 - n.a.": {"isSucceeded":true,},
"4 - ABCDEF": {"isSucceeded":true},
"9 - Remote Software Update": {"isSucceeded":true,},
};
const ordered = {};
const firstNumber = str => parseInt(str.split(' -')[0].trim());
Object.keys(object)
.sort((a, b) => firstNumber(a) > firstNumber(b) ? 1 : -1)
.forEach(function(key) {
ordered[key] = object[key];
});
console.log(ordered);
с использованием функции reduce
:
const object = {
"18 - n.a.": {"isSucceeded":true,},
"4 - ABCDEF": {"isSucceeded":true},
"9 - Remote Software Update": {"isSucceeded":true,},
};
const firstNumber = str => parseInt(str.split(' -')[0].trim());
const ordered = Object.keys(object)
.sort((a, b) => firstNumber(a) > firstNumber(b) ? 1 : -1)
.reduce((acc, key) => {
acc[key] = object[key];
return acc;
}, {});
console.log(ordered);