2015-10-05 167 views
0

我知道这个问题已经回答了很多,但我似乎无法找到我需要的确切答案。jQuery排序对象数组

我有一个数据的对象,看起来像:

{Tom: Array, Ant: Array, Ben: Array} 

我想这个排序,使它看起来像:

{Ant: Array, Ben: Array, Tom: Array} 

是否有一个方便的jQuery的方法来做到这一点?

谢谢。

+2

如果它是您的语言和“{}”所暗示的对象,那么这些键没有顺序并且无法排序。用一个真实的代码示例来阐述你想要解决的问题。 –

回答

0

你可以不用jQuery的:

var unorderedObj = { Tom: [], Ant: [], Ben: [] }; 

var keys = Object.keys(unorderedObj); 

var sortedKeys = keys.sort(); // [ 'Ant', 'Ben', 'Tom' ] 

var sortedObj = {};  

sortedKeys.forEach(function(k) { 
    sortedObj[k] = unorderedObj[k] 
}) 

console.log(sortedObj); // { Ant: [], Ben: [], Tom: [] } 
+0

@Downvoter:你能解释为什么downvote?这个答案提供了一个解决方案的OP – Daniel

+0

嗯 - 所以这个作品 虽然(一个细微的差异)我的新排序结果看起来像:[{my data ..}] 即它在一个数组 – userMod2

+0

@ userMod2:我已经做了一个编辑,以准确地适合你需要的东西 – Daniel

-1

这里是一个JavaScript/jQuery函数来排序键的对象:

function sortObj(o){// where o is the raw object 
    var keys = Object.keys(o); 
    var sorted = keys.sort(); 

    var obj = {}; 
    $.each(sorted, function(i, key) { 
     obj[key] = o[key]; 
    }); 
    return obj; 
} 

用途为:

var rawobj = {Tom: [], Ant: [], Ben: []}; 
var sortedobj = sortObj(rawobj); 
+0

Downvoter:OP想要做的是一个有效的需求以编程方式。如果有解决方案能够有效实现这一目标,我相信它对每个人都有用,而不是无声的倒退。 –

1

Javascript对象的属性不能被排序,除非你想创建一个包含排序中该对象属性的数组/列表d期限。