javascript - 按标签在子项内部排序
问题描述
我有一个带有 3 个主要数组(key:1、key:2、key:3)的对象,在每个数组中我都有孩子。
我需要按标签对每个主数组的这些孩子进行排序,以便最后我保持相同的结构,但是使用排序列表。
我也明白用数字排序与用字符串排序不同。
感谢您的任何帮助。解决方案可以是 JS 或 jQuery。
var agents_B = [
{key:1, label:"Main", open: true, children: [
{key:111, label:"Ricardo Contente", 'tel':'0799434787','profile_picture':'profile_1.png', 'checkinout':'true', 'skill':'PW'},
{key:112, label:"Antonio Peleaz", 'profile_picture':'profile_2.png', 'checkinout':'false','skill':'PW'},
{key:113, label:"Vahxid Musa", 'profile_picture':'profile_3.png','checkinout':'true','skill':'SA'},
{key:114, label:"Mari Jovic", 'profile_picture':'profile_4.png','checkinout':'false','skill':'HL'},
{key:115, label:"Dieter Streuli", 'profile_picture':'profile_2.png','checkinout':'true','skill':'HL', 'changed':'true'},
{key:121, label:"Marcos Alonso", 'profile_picture':'profile_1.png','skill':'HL'},
{key:122, label:"Rui Morais", 'profile_picture':'profile_4.png','skill':'HL'},
{key:123, label:"Carlos Marcos", 'profile_picture':'profile_3.png','skill':'PW', 'changed':'true'},
{key:124, label:"Ramon Dikstaal"},
{key:131, label:"Matthias Bürgi"},
{key:132, label:"Thomas Bosshard", 'profile_picture':'profile_1.png'},
{key:141, label:"Jana", 'profile_picture':'profile_2.png'},
{key:142, label:"Michel"},
]},
{key:2, label:"B/A", open:false, children: [
{key:21, label:"Jana Mueller"},
{key:22, label:"Michel Bürgi"},
]},
{key:3, label:"Not assigned", open:true, children: [
{key:'not_assigned', label:'', tel:'', skill:'', profile_picture:''}
]}
];
解决方案
您可以执行以下操作,
var agents_B = [
{key:1, label:"Main", open: true, children: [
{key:111, label:"Ricardo Contente", 'tel':'0799434787','profile_picture':'profile_1.png', 'checkinout':'true', 'skill':'PW'},
{key:112, label:"Antonio Peleaz", 'profile_picture':'profile_2.png', 'checkinout':'false','skill':'PW'},
{key:113, label:"Vahxid Musa", 'profile_picture':'profile_3.png','checkinout':'true','skill':'SA'},
{key:114, label:"Mari Jovic", 'profile_picture':'profile_4.png','checkinout':'false','skill':'HL'},
{key:115, label:"Dieter Streuli", 'profile_picture':'profile_2.png','checkinout':'true','skill':'HL', 'changed':'true'},
{key:121, label:"Marcos Alonso", 'profile_picture':'profile_1.png','skill':'HL'},
{key:122, label:"Rui Morais", 'profile_picture':'profile_4.png','skill':'HL'},
{key:123, label:"Carlos Marcos", 'profile_picture':'profile_3.png','skill':'PW', 'changed':'true'},
{key:124, label:"Ramon Dikstaal"},
{key:131, label:"Matthias Bürgi"},
{key:132, label:"Thomas Bosshard", 'profile_picture':'profile_1.png'},
{key:141, label:"Jana", 'profile_picture':'profile_2.png'},
{key:142, label:"Michel"},
]},
{key:2, label:"B/A", open:false, children: [
{key:21, label:"Jana Mueller"},
{key:22, label:"Michel Bürgi"},
]},
{key:3, label:"Not assigned", open:true, children: [
{key:'not_assigned', label:'', tel:'', skill:'', profile_picture:''}
]}
];
const sortByLabel = (arr) => {
arr.sort((a, b) => {
if(a.label > b.label) return 1;
else if(a.label < b.label) return -1;
else return 0;
});
return arr;
}
agents_B.forEach((item, index) => {
agents_B[index] = {...item, children: sortByLabel(item.children)};
})
console.log(agents_B);
推荐阅读
- sql - 使用左连接运行 MS Access 删除查询时出错
- mysql - SQL插入避免从查询表中重复+避免在更新表中插入重复
- webforms - 如何防止 asp:TreeNode 缩进间距作为父节点?
- python - 显示 3d 线的终点:Python 3D plot
- html - 当我单击 Angular 中的删除按钮时,我的表格行和列消失了吗?
- python - 如何在 Python 3 中获得一个函数来返回一个可以在另一个函数中使用的值?
- kubernetes - 就卷而言,StatefulSet 和 Deployment 有什么区别?
- javascript - timeoutID 在初始化之前如何访问?
- python - 无法与 OVH 的 SMTP 建立连接
- python - 为什么我的 Pygame Collision 总是发生碰撞?