【发布时间】:2016-10-22 22:01:13
【问题描述】:
我有一个包含值的数组。我正在对它进行排序,以将某些项目保持在顶部。到目前为止,这是有效的。现在我想运行两个条件,例如我有两个前缀要与数组中的每个项目匹配:tableprefix 和 secondaryprefix。我已经实现的是将 tableprefix 保持在顶部。其余项目必须按字母顺序排序。
我想要达到的目标:
1: 数组项匹配最顶部的tableprefix // 已经实现
2: 匹配secondaryprefix的数组项在tableprefix之后 // 不知道
3:按字母顺序对其余项目进行排序 // 已经实现
数组:
columns = [
"es_officer_name",
"es_officer_fname",
"es_officer_apply_status",
"es_officer_dob",
"es_wl_1_11_test_id",
"es_officer_id",
"es_designation_id",
"es_wl_1_11_test_edit_date",
"es_designation_title",
"es_employment_type_id",
"es_employment_type_name",
"es_service_type_id",
"es_service_type_name",
"es_wl_1_11_test_added_date",
"es_bps_id",
"es_bps_title",
"es_department_id",
"es_department_name"
];
前缀:
var tablePrefix = "es_wl";
排序算法:
columns.sort(function(a, b)
{
if (a.indexOf(tablePrefix))
{
if (b.indexOf(tablePrefix))
{
return a.localeCompare(b);
}
else
{
return 1;
}
}
else
{
if (b.indexOf(tablePrefix))
{
return -1;
}
else
{
return 0; // All prefixed are considered equal
}
}
});
排序结果:
[
"es_wl_1_11_test_id",
"es_wl_1_11_test_edit_date",
"es_wl_1_11_test_added_date",
"es_bps_id",
"es_bps_title",
"es_department_id",
"es_department_name",
"es_designation_id",
"es_designation_title",
"es_employment_type_id",
"es_employment_type_name",
"es_officer_apply_status",
"es_officer_dob",
"es_officer_fname",
"es_officer_id",
"es_officer_name",
"es_service_type_id",
"es_service_type_name"
]
现在我想要的是将与 tablePrefix "es_wl" 匹配的所有项目保持在最顶部。但同时添加另一个前缀secondaryPrefix"es_officer",这样所有匹配的项目就会紧跟在“es_wl”项目之后,然后是通常的字母排序。
我查看了几个项目并应用了它,但这些项目甚至没有从它们的位置移动。我想我的逻辑对于集成第二个前缀并保留第一个前缀并随后进行排序是完全错误的。
【问题讨论】:
标签: javascript sorting