Ale*_*FF1 3 javascript arrays sorting typescript angular
我有一个对象数组,我必须循环并按属性名称"tagColor"分组重复值,然后我需要按名称排序的分组对象.我实现了按颜色排序的第一步,现在我需要按名称对这些组进行排序,在angular 4,typescript中实现
这是数组列表
tags = [
{
"tagType": {
"name": "a",
"tagColor": "#0000FF"
}
},
{
"tagType": {
"name": "a",
"tagColor": "#FF0000"
}
},
{
"tagType": {
"name": "c",
"tagColor": "#FF0000",
}
},
{
"tagType": {
"name": "b",
"tagColor": "#FF0000",
}
},
{
"tagType": {
"name": "b",
"tagColor": "#0000FF",
}
}
]
Run Code Online (Sandbox Code Playgroud)
我的函数按tagColor排序:
tags.sort((a, b) => a.tagType.tagColor.localeCompare(b.tagType.tagColor));
Run Code Online (Sandbox Code Playgroud)
这个仅按颜色分组,但如何按字母顺序对这些组进行排序?
您可以使用单个排序调用,如果比较标记的结果为0,则按名称进行比较:
tags.sort((a, b) => {
let result = b.tagType.tagColor.localeCompare(a.tagType.tagColor);
if(result == 0) {
return a.tagType.name.localeCompare(b.tagType.name);
}
return result;
});
Run Code Online (Sandbox Code Playgroud)
或者更简洁但可读性更低的版本:
tags.sort((a, b) =>
b.tagType.tagColor.localeCompare(a.tagType.tagColor) // if this is 0 (aka falsy) return the other value
|| a.tagType.name.localeCompare(b.tagType.name));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
306 次 |
| 最近记录: |