Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript排序多维对象_Javascript_Sorting_Javascript Objects - Fatal编程技术网

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']