js处理字符串构造结果

在js中,如何自定义字符串值

let rentalLocal  ="2#宿舍楼/6楼/1636,2#宿舍楼/6楼/1628,2#宿舍楼/5楼/1525,2#宿舍楼/5楼/1516,2#宿舍楼/3楼/1324,2#宿舍楼/2楼/1218,2#宿舍楼/1楼/1121,2#宿舍楼/1楼/1127"

如何让结果变为2#宿舍楼1楼(1121、1127),2#宿舍楼2楼(1218),2#宿舍楼3楼(1324),2#宿舍楼5楼(1516、1525),2#宿舍楼6楼(1628、1636)呢

以下是具体代码

// 1. 拆分字符串const addressList = rentalLocal.split(',');
// 2. 解析每个地址并分组const groupedData = {};
addressList.forEach(address => {
    // 提取楼栋、楼层和房间号const [building, floor, room] = address.split('/');
    // 构造分组键(楼栋 + 楼层)const key = `${building}${floor}`;
    // 初始化分组if (!groupedData[key]) {
        groupedData[key] = {
            building,
            floor,
            rooms: []
        };
    }
    // 将房间号添加到分组groupedData[key].rooms.push(room);
});
// 3. 将分组数据转换为数组并排序const sortedGroups = Object.values(groupedData).sort((a, b) => {
    // 按楼栋排序if (a.building < b.building) return -1;
    if (a.building > b.building) return 1;
    // 按楼层排序return a.floor.localeCompare(b.floor, 'zh-CN');
});
// 4. 生成结果字符串const finalResult = sortedGroups.map(group => {
    // 对房间号排序const sortedRooms = group.rooms.sort((a, b) => a.localeCompare(b, 'zh-CN'));
    // 格式化为目标字符串return `${group.building}${group.floor}(${sortedRooms.join('、')})`;
}).join(',');

最终finalResult的结果就符合预期了。

标签:
js
评论 (0)
说点什么吧... (取消回复)