Javascript排序多维对象
所以我知道这里有几十篇文章描述了如何对多维对象进行排序,但我还没有找到一篇适合我需要的文章 所有这些解决方案都基于以下对象:Javascript排序多维对象,javascript,sorting,javascript-objects,Javascript,Sorting,Javascript Objects,所以我知道这里有几十篇文章描述了如何对多维对象进行排序,但我还没有找到一篇适合我需要的文章 所有这些解决方案都基于以下对象: buttons: { confirm: { class: 'btn btn-primary', value: 'Opslaan', order: 1 }, cancel: { class: 'btn btn-default', value: 'Annuleer',
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
}
},
[{id:1,值:'aaa'},{id:40,值:'bbbbbb'}]
我的对象如下所示:
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
}
},
当然,我想对其进行排序,以便结果是:确认、删除、取消。
我尝试过这个方法(我希望不会奏效):
但这给了我一个未捕获类型错误:未定义不是函数
非常感谢您的帮助 我也有类似的需求,最终我做了一些类似的事情--
//动态键入的代码--未测试。
按钮:{
列表:[],//我们将在这里存储东西。
确认:{
类:“btn btn主”,
值:“opslan”,
订单:1
},
取消:{
类:“btn btn默认值”,
值:“环空器”,
订单:10
}
删除:{
类别:“btn btn危险”,
值:“Verwijder”,
订单:2
}
}
//现在,从属性中填写列表
用于(变量输入按钮){
//不要在输出中实际使用“list”属性
如果(键!=“列表”){
列表。按(键);
}
}
//现在我们有了我们的列表,对它进行排序
//任何专门的排序都可以在这里的“sort”方法中完成
buttons.list=buttons.list.sort();
//现在,处理已排序的列表
对于(变量i=0;i
正如@epascarello提到的,JavaScript中没有对象的本机排序函数
如果您有兴趣按照某种顺序对对象的键数组进行排序,可以使用
这很简单:一个对象没有sort(),对象不能保证顺序。有时候这个网站让我觉得自己像个白痴。。哈哈。但这是否意味着没有办法实现我的结果?除了将其更改为数组?@DiederikvandenB技术上来说,可能还有一些方法可以对对象进行排序(object.keys,它将允许您对该数组进行排序,然后您可以重建对象)。但是,对象是基于ECMA规范(请参见:)未排序的,因此不能保证对象会按照您的喜好进行排序。您最好将buttons属性转换为数组。尽管我将系统更改为数组方法,但我觉得这个答案应该被标记为最佳解决方案,因为它可能会帮助其他人。新数组可以用于循环(例如使用$.each()
),然后可以调用对象中的原始值。
// Code typed on the fly -- untested.
buttons: {
list: [], // We'll store things here.
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
}
}
// Now, fill the list from the properties
for (var key in buttons) {
// Don't actually use the 'list' property in the output
if (key !== "list") {
list.push(key);
}
}
// Now that we have our list, sort it
// Any specialized sorting can be done in the `sort` method here
buttons.list = buttons.list.sort();
// Now, deal with the sorted list
for (var i = 0; i < buttons.list.length; i++) {
var key = buttons.list[i];
var button = buttons[key];
console.log(button);
}
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']