假设有如下对象数组:
var arr = [
{ id: 1, name: 'abc'},
{ id: 2, name: 'abd'},
{ id: 3, name: 'bcd'},
{ id: 4, name: 'bce'},
{ id: 5, name: 'bcd'},
{ id: 6, name: 'def'}
];
现在需要按照某个前缀对数组中的元素进行排序,可以使用如下代码:
function sortByPrefix(key, prefix, arr) {
return arr.sort(function(a, b) {
var aName = a[key];
var bName = b[key];
if (aName.startsWith(prefix) && bName.startsWith(prefix)) {
return aName.localeCompare(bName); // 两者都匹配,按字典顺序排序
} else if (aName.startsWith(prefix)) {
return -1; // 只有 aName 匹配,排在前面
} else if (bName.startsWith(prefix)) {
return 1; // 只有 bName 匹配,排在前面
} else {
return aName.localeCompare(bName); // 都不匹配,按字典顺序排序
}
});
}
该函数接受三个参数:需要排序的键名 key、要匹配的前缀 prefix 和需要排序的数组 arr。返回排好序的数组。
例如,如果要按照前缀 'bc' 对上面的数组进行排序,则可以这样调用:
sortByPrefix('name', 'bc', arr);
排序后得到的数组为:
[
{ id: 3, name: 'bcd'},
{ id: 5, name: 'bcd'},
{ id: 4, name: 'bce'},
{ id: 1, name: 'abc'},
{ id: 2, name: 'abd'},
{ id: 6, name: 'def'}
]
其中,'bcd' 和 'bce' 都以 '
上一篇:按前缀的GCP Bucket权限
下一篇:按前缀要求所有命名空间