2017-05-04 58 views
1

考虑以下对象作为例子的对象:你将如何按字母顺序排列的可能(JavaScript)的最简单,最简单的方法

var object = { 
    some_key: 'some value', 
    some_other_key: 'some other value', 
    AKey: 'notice that some will have underscores and some wont.' 
    callBackl: 'http://google.ca' 
} 

应该改为:

var object = { 
    AKey: 'notice that some will have underscores and some wont.' 
    callBackl: 'http://google.ca' 
    some_key: 'some value', 
    some_other_key: 'some other value', 
} 

我还没有找到一个lodash解决方案,以及我在堆栈上找到的很多解决方案,such as this one,似乎....复杂。也许这不是微不足道的?

想法?

+0

重复http://stackoverflow.com/q/5467129/7947361 – captncraig

+0

@OliviaRuth这个解决方案的问题是,它的混乱。它不干净。它的总值。 – TheWebs

+0

就是这样。 http://stackoverflow.com/a/31102605/7947361似乎是最新的。那么古老,拥有那么多票,这看起来就像你将要得到的那样好。 – captncraig

回答

3

编辑:它看起来好像当我第一次发布,新定义的JavaScript规范状态,(对我的完全惊喜)JavaScript对象确实有订购(Sort JavaScript object by key)!这就是说,我仍然不会推荐尝试排序对象本身的元素,而是采用我在下面描述的关键排序方法。 Object.keys(obj)以及一些其他的边界情况似乎仍然没有排序的保证,我认为这是足够好的理由远离取决于你的对象的键的顺序。


原始帖子在下面。

除非我不正确地理解JavaScript,否则javascript对象中的键没有保证的顺序。这意味着,从理论上讲,我可以创建对象

{'a':'hi', 'c':'hey', 'b':'hello'} 

而且,通过其按键迭代,我能得到“A”,“B”的任何可能的排序,和“c”。

如果你需要以任何特定的顺序显示你的对象,我会建议访问你的对象的键和排序,然后按新排序的键的排序顺序访问你的对象。 (可以看到这里实现:Is there a way to sort/order keys in JavaScript objects?

+2

不一定正确。 ES6规范定义了一个订单。见http://stackoverflow.com/a/31102605/7947361 – captncraig

+1

@ OliviaRuth [是的,但没有](http://stackoverflow.com/q/30076219/1048572) – Bergi

+0

公平的。我想“尽量不要在乎”可能仍然是最好的建议。 – captncraig

相关问题