Javascript排序多维对象

Die*_*rik 2 javascript sorting javascript-objects

所以我知道这里有几十个帖子描述了如何对多维对象进行排序,但我找不到符合我需求的帖子.

所有这些解决方案都基于这样的对象:

[{id: 1, value: 'aaa'},{id: 40, value: 'bbbb'}]

我的对象看起来像这样:

buttons: {
    confirm: {
        class: 'btn btn-primary',
        value: 'Opslaan',
        order: 1
    },
    cancel: {
        class: 'btn btn-default',
        value: 'Annuleer',
        order: 10
    }
    delete: {
        class: 'btn btn-danger',
        value: 'Verwijder',
        order: 2
    }
},
Run Code Online (Sandbox Code Playgroud)

当然,我想对此进行排序,以便结果是:确认,删除,取消.我试过这个(我预计不会工作):

this.options.buttons.sort ( function ( a, b ) {
    return a.order - b.order;
});
Run Code Online (Sandbox Code Playgroud)

但那给了我一个 Uncaught TypeError: undefined is not a function

任何帮助深表感谢!

小智 5

正如@epascarello所提到的,JavaScript中的对象没有本机排序功能.

如果您有兴趣根据某个顺序对对象的键数组进行排序,可以使用Object.keys()!

var buttons = {
  confirm: { value: 'foo', order: 0 },
  cancel: { value: 'bar', order: 2},
  delete: { value: 'baz', order: 1}
};

var sortedButtons = Object.keys(buttons).sort( function(keyA, keyB) {
  return buttons[keyA].order - buttons[keyB].order;
}); // returns ['confirm', 'delete', 'cancel']
Run Code Online (Sandbox Code Playgroud)