Javascript基于值对键值对对象进行排序

Javascript基于值对键值对对象进行排序,javascript,jquery,Javascript,Jquery,我有一个像下面这样的物体。尝试根据值按升序重新排列。类似于Javascript数组排序方法 var masterList = { "1": "google", "2": "yahoo", "3": "msn", "4": "stackoverflow", "5": "github", "6": "jsfiddle", "7": "amazon", "8": "ebay" } 请告诉我更好的解决方案…JavaScript对象

我有一个像下面这样的物体。尝试根据值按升序重新排列。类似于Javascript数组排序方法

    var masterList = {
    "1": "google",
    "2": "yahoo",
    "3": "msn",
    "4": "stackoverflow",
    "5": "github",
    "6": "jsfiddle",
    "7": "amazon",
    "8": "ebay"
}

请告诉我更好的解决方案…

JavaScript对象没有顺序。即使大多数浏览器确实按照创建属性的相同顺序进行迭代,也无法保证,因此对象不支持排序

有关更多信息,请参见此处:

你可能也会对这件事感兴趣


如果需要可排序列表,则必须将其存储为对象数组:

var masterList = [
    { key: 1, val: "google" },
    { key: 2, val: "yahoo" },
    { key: 3, val: "msn" },
    { key: 4, val: "stackoverflow" },
    { key: 5, val: "github" },
    { key: 6, val: "jsfiddle" },
    { key: 7, val: "amazon" },
    { key: 8, val: "ebay" }
];
然后,要对它们进行排序,只需使用常规数组的
sort
方法:

masterList = masterList.sort(function (a, b) {
    return a.val.localeCompare( b.val );
});
这是小提琴:

var obj={
“1”:“谷歌”,
“2”:“雅虎”,
“3”:“msn”,
“4”:“stackoverflow”,
“5”:“github”,
“6”:“jsfiddle”,
“7”:“亚马逊”,
“8”:“易趣”
};
var-arr=[];
for(obj中的var键){
if(对象hasOwnProperty(键)){
arr.push(对象[键]);
}
}
警报(arr.sort())
var主列表={
“2”:“雅虎”,
“3”:“msn”,
“4”:“stackoverflow”,
“5”:“github”,
“6”:“jsfiddle”,
“7”:“亚马逊”,
“8”:“易趣”,
“1”:“谷歌”,
}
var主列表{}
Object.keys(masterList.sort().forEach(a=>masterList\uUa]=masterList[a])

console.log(masterList)
这篇文章将帮助您完成这项工作,也许我只是不懂sort(),但这对数值不起作用。试图按“键”排序会返回未定义的函数。@dval-是
localeCompare
使您感到厌烦。如果您是按
键进行排序
,那么只需
返回a-b
@Joseph Silber啊!完美的谢谢。类似于@dval的问题,我如何对值(而不是键)进行数字排序?我的数组看起来与此类似<代码>[{key:“Designer”,val:0},{key:“Developer”,val:2},{key:“Engineer”,val:1}]
@finbarmagin-
list=list.sort(函数(a,b){返回a.val-b.val;})此解决方案的唯一问题是缺少结果数组中的键值