Javascript 按固定值对对象排序
假设我有一个 [完成、等待、忙碌] 我如何排序,以便订单繁忙、待定、完成 我将有一个对象列表,每个对象的状态值为done、pending和busy。所以可能有100个 我不知道这是怎么回事,因为它不是按字母顺序排列的,也不是按逻辑排列的,它是基于用户的偏好 我希望他们永远是我的命令 我正在使用javascript对数组进行排序Javascript 按固定值对对象排序,javascript,sorting,Javascript,Sorting,假设我有一个 [完成、等待、忙碌] 我如何排序,以便订单繁忙、待定、完成 我将有一个对象列表,每个对象的状态值为done、pending和busy。所以可能有100个 我不知道这是怎么回事,因为它不是按字母顺序排列的,也不是按逻辑排列的,它是基于用户的偏好 我希望他们永远是我的命令 我正在使用javascript对数组进行排序 Checksum: "e791e37b19187712fc95078e8fd2b367" FileLastWriteTimeUtc: "2013/06/07 01:22:
Checksum: "e791e37b19187712fc95078e8fd2b367"
FileLastWriteTimeUtc: "2013/06/07 01:22:40 PM"
FileName: "1.jpg"
PartsSuccess: 0
PartsTotal: 0
Path: "\Image Content Tests"
Size: 4174754
Status: "Done"
谢谢您为每个值指定了排序顺序。这种排序顺序是一个数字,完全取决于您如何制作它们。然后按照实际要排序的值的排序顺序进行排序。例如:
var data = [
{
id: 1,
state: "Pending"
},
{
id: 2,
state: "Done"
},
{
id: 3,
state: "Busy"
}
];
var sortOrders = {
"Done": 1,
"Busy": 2,
"Pending": 3
};
data.sort(function(a, b) {
return sortOrders[a.state] - sortOrders[b.state];
});
演示:为每个值分配排序顺序。这种排序顺序是一个数字,完全取决于您如何制作它们。然后按照实际要排序的值的排序顺序进行排序。例如:
var data = [
{
id: 1,
state: "Pending"
},
{
id: 2,
state: "Done"
},
{
id: 3,
state: "Busy"
}
];
var sortOrders = {
"Done": 1,
"Busy": 2,
"Pending": 3
};
data.sort(function(a, b) {
return sortOrders[a.state] - sortOrders[b.state];
});
演示:我假设您有如下对象
[
{
'name' : 'Sending mail to manager',
'status': 'pending'
},
{
'name' : 'Talking to girl friend',
'status': 'busy'
},
{
'name' : 'Breakfast',
'status': 'done'
},
]
我建议你使用
我假设你有这样的物体
[
{
'name' : 'Sending mail to manager',
'status': 'pending'
},
{
'name' : 'Talking to girl friend',
'status': 'busy'
},
{
'name' : 'Breakfast',
'status': 'done'
},
]
我建议你使用
假设对象列表是数组,请使用自定义排序函数:
sortMe.sort(function (a, b) {
var statusA = ['Busy', 'Pending', 'Done'].indexOf(a.Status),
statusB = ['Busy', 'Pending', 'Done'].indexOf(b.Status);
return statusA - statusB;
});
其中sortMe类似于以下内容:
var sortMe = [{
"Checksum": "e791e37b19187712fc95078e8fd2b367",
"FileLastWriteTimeUtc": "2013/06/07 01:22:40 PM",
"FileName": "1.jpg",
"PartsSuccess": 0,
"PartsTotal": 0,
"Path": "\Image Content Tests",
"Size": 4174754,
"Status": "Done"
},{
"Checksum": "e791e37b19187712fc95078e8fd2b367",
"FileLastWriteTimeUtc": "2013/06/07 01:22:40 PM",
"FileName": "2.jpg",
"PartsSuccess": 0,
"PartsTotal": 0,
"Path": "\Image Content Tests",
"Size": 4174754,
"Status": "Busy"
},{
"Checksum": "e791e37b19187712fc95078e8fd2b367",
"FileLastWriteTimeUtc": "2013/06/07 01:22:40 PM",
"FileName": "3.jpg",
"PartsSuccess": 0,
"PartsTotal": 0,
"Path": "\Image Content Tests",
"Size": 4174754,
"Status": "Pending"
}];
假设对象列表是数组,请使用自定义排序函数:
sortMe.sort(function (a, b) {
var statusA = ['Busy', 'Pending', 'Done'].indexOf(a.Status),
statusB = ['Busy', 'Pending', 'Done'].indexOf(b.Status);
return statusA - statusB;
});
其中sortMe类似于以下内容:
var sortMe = [{
"Checksum": "e791e37b19187712fc95078e8fd2b367",
"FileLastWriteTimeUtc": "2013/06/07 01:22:40 PM",
"FileName": "1.jpg",
"PartsSuccess": 0,
"PartsTotal": 0,
"Path": "\Image Content Tests",
"Size": 4174754,
"Status": "Done"
},{
"Checksum": "e791e37b19187712fc95078e8fd2b367",
"FileLastWriteTimeUtc": "2013/06/07 01:22:40 PM",
"FileName": "2.jpg",
"PartsSuccess": 0,
"PartsTotal": 0,
"Path": "\Image Content Tests",
"Size": 4174754,
"Status": "Busy"
},{
"Checksum": "e791e37b19187712fc95078e8fd2b367",
"FileLastWriteTimeUtc": "2013/06/07 01:22:40 PM",
"FileName": "3.jpg",
"PartsSuccess": 0,
"PartsTotal": 0,
"Path": "\Image Content Tests",
"Size": 4174754,
"Status": "Pending"
}];
您能从对象列表中发布一个示例对象吗?您需要编写自定义比较函数,并将其与Array.sort func结合使用。有关排序函数的更多信息:添加了一个对象,以便状态可以完成、忙和挂起。您可以从对象列表中发布一个示例对象吗?您需要编写自定义比较函数,并将其与Array.sort func结合使用。关于排序功能的更多信息:添加了一个对象,这样状态就可以完成了,忙碌和等待,简单。我是朝这个方向想的!谢谢,这会奏效的啊,很简单。我是朝这个方向想的!谢谢,这会有用的