在具有非索引数组键的Array中按键对Javascript Object进行排序

时间:2015-07-17 19:54:57

标签: javascript arrays sorting

我面临的问题是我的数组没有被0,1,2,3等索引。它的索引是一个id 0654,3423,7543等...所以例如:

var obj = {};
obj["0654"] = { "Name" : "Tony" };
obj["3423"] = { "Name" : "Fred" };
obj["7543"] = { "Name" : "Dave" };

我正在寻找一种通过Name键对它们进行排序的方法。但我不断得到一个功能错误。不太确定我做错了什么。我正在使用此代码对其进行排序:

Array.prototype.sortByProp = function(p){
    return this.sort(function(a,b){
        return (a[p].toLowerCase() > b[p].toLowerCase()) ? 1 : (a[p].toLowerCase() < b[p].toLowerCase()) ? -1 : 0;
    });
}

这样做:

obj.sortByProp("Name");

任何指导或最好的方法来解决这个问题...如果这是另一篇文章的重复,请向我指出正确的方向,因为我搜遍了这个场景并且找不到解?另外,如果你能告诉我为什么这不起作用,那么我就可以更好地理解对象了。

1 个答案:

答案 0 :(得分:0)

UnderscoreJS是你最好的朋友!

_.sortBy(obj, 'Name');

Try it yourself.