我有一个具有该值的对象:
category_list = {
"1000":{
"name":"Cars",
"order":"1",
"level": "2"
},
"2010":{
"name":"Houses",
"order":"2",
"level": "2"
},
"1030":{
"name":"Cars",
"order":"3",
"level": "2"
}
}
当我想展示它时,chrome会根据索引重新排序:
它变成了:
category_list = {
"1000":{
"name":"Cars",
"order":"1",
"level": "2"
},
"1030":{
"name":"Cars",
"order":"3",
"level": "2"
},
"2010":{
"name":"Houses",
"order":"2",
"level": "2"
}
}
我希望保持推送时的顺序!或根据字段“订单”重新排序
有人可以帮忙吗
最好的问候
答案 0 :(得分:3)
根据定义,JavaScript对象 无序。
如果您需要有序列表,则应使用数组(对象),例如:
var objs = [
{
"key": 1000,
"name":"Cars",
"order": 1,
"level": 2
}, ...
];
objs.sort(function(a, b) {
return a.order - b.order;
});
注意:对于数字属性,请使用数字类型。
答案 1 :(得分:1)
JavaScript对象不保证其属性的特定顺序。因此,您希望拥有的结构在JavaScript中不存在。
因此,使用原生结构,您可以获得:
如果你需要两者,你需要添加一个将顺序映射到对象键的数组,例如: [1000, 2010, 1030]
或将数据存储在数组中并创建如下映射:{1000: 0, 2010: 1, 1030: 2}
。