慕哥9229398
将它们移动到一个数组,对该数组进行排序,然后将该数组用于您的目的。这是一个解决方案:var maxSpeed = {
car: 300,
bike: 60,
motorbike: 200,
airplane: 1000,
helicopter: 400,
rocket: 8 * 60 * 60};var sortable = [];for (var vehicle in maxSpeed) {
sortable.push([vehicle, maxSpeed[vehicle]]);}sortable.sort(function(a, b) {
return a[1] - b[1];});//[["bike", 60], ["motorbike", 200], ["car", 300],//["helicopter", 400], ["airplane", 1000], ["rocket", 28800]]一旦拥有了数组,就可以按照自己喜欢的顺序从数组中重建对象,从而实现您的目标。这可以在我所知道的所有浏览器中工作,但它将依赖于实现的怪癖,并且可能随时中断。您永远不应该假设JavaScript对象中元素的顺序。
饮歌长啸
为了完整起见,此函数返回已排序的对象属性数组:function sortObject(obj) {
var arr = [];
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
arr.push({
'key': prop,
'value': obj[prop]
});
}
}
arr.sort(function(a, b) { return a.value - b.value; });
//arr.sort(function(a, b) { a.value.toLowerCase().localeCompare(b.value.toLowerCase()); }); //use this to sort as strings
return arr; // returns array}var list = {"you": 100, "me": 75, "foo": 116, "bar": 15};var arr = sortObject(list);console.log(arr);
// [{key:"bar", value:15}, {key:"me", value:75}, {key:"you", value:100}, {key:"foo", value:116}]以上代码的Jsfiddle就在这里。此解决方案基于本文。这里有用于排序字符串的更新小提琴。您可以从中删除其他.toLowerCase()转换,以进行区分大小写的字符串比较。