2016-03-14 39 views
0

我已经有了的东西的对象是:如何强制对象键值对首先坐在对象中?

{ 
    name: 'Smith', 
    age: 24 
} 

我想别的东西添加到它,并强制其先坐下。我怎么做?

+1

对象没有顺序,其实。 –

+0

我在这里闻到一个XY问题。你为什么关心对象的键的顺序? –

+0

@MadaraUchiha使用Meteor和MongoDB对字段进行排序,并使用第一个具有更高优先级的键值对。它显然有序,但也许这是因为Meteor将它变成了场景之后的JSON。 – Yeats

回答

3

在过去的ECMAScript版本中,对象中按键的顺序是未定义的(意思是,顺序无关紧要,您不能指望顺序保持不变)。

但是,在ECMAScript 2015中,订单被明确定义为它们被插入的顺序,意思是说,您只能在对象的末尾插入新的关键字。


根据this answer,值得注意的是,虽然为了在ES2015规定,所有从ES5功能及以下不需要实现它,遗留原因。

但是,从我个人可以记得的所有浏览器(从这里的个人经验来讲,我可能完全错了),实现了对象顺序,就像今天的规格一样。

+0

不要担心,我会解决你的downvote。为什么他反对投票呢?这个答案是正确的! – XGreen

1

除了@MadaraUchiha的回答,您可以创建Object.assign()新的对象,并指定新的密钥,然后再休息:

var obj = { 
    name: 'Smith', 
    age: 24 
}; 

var obj = Object.assign({}, {prop: 'something else'}, obj);