Make an array that contains the object properties with the names added to them:
var array = [];
for (var key in object) {
object[key].name = key;
array.push(object[key]);
}
Then sort that array by the number:
array.sort((a, b) => a.number - b.number);
Then get the names out of the array:
var sortedNames = array.map(e => e.name);
Full demo:
let object = {
name1 : {
number : .5,
otherVar : 'something'
},
name2 : {
number : .7,
otherVar : 'text'
},
name3 : {
number : -.1,
otherVar : 'some words'
}
};
var array = [];
for (var key in object) {
object[key].name = key;
array.push(object[key]);
}
array.sort((a, b) => a.number - b.number);
var sortedNames = array.map(e => e.name);
console.log(sortedNames);