首页 > 解决方案 > 按标签在子项内部排序

问题描述

我有一个带有 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:''}
        ]}
    ];

标签: javascriptjquery

解决方案


您可以执行以下操作,

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);


推荐阅读