如何对混合字符字符串数组排序,使含>符号的元素排在末尾
排序逻辑调整实现方案
核心目标
将所有键名带有>符号的数组项统一移动到排序结果的末尾,其余不带>的元素保留原有排序规则不变。
实现步骤
- 新增符号判断逻辑:识别每一项的键名(数组第0位的字符串)是否包含
>字符 - 重写数组排序的比较规则:
- 优先按「是否带>」分组排序:不带
>的元素全部排在带>的元素前面 - 同分组的元素,直接沿用原本已经生效的排序规则即可,不需要改动原有比较逻辑
- 优先按「是否带>」分组排序:不带
示例代码
适配现有键值对数组结构的可直接套用的sort逻辑:
// 替换你原本的数组排序逻辑 sortedResult = rawDataArray.sort((a, b) => { const aKey = a[0]; const bKey = b[0]; const aHasGt = aKey.includes('>'); const bHasGt = bKey.includes('>'); // 先按是否带>分组排序 if (aHasGt !== bHasGt) { return aHasGt ? 1 : -1; } // 同组内沿用你原本的排序逻辑(把之前写的比较代码放在这里即可) return originalCompareLogic(aKey, bKey); })
调整后效果
原本排在首位的>20Y项会被移动到数组最末尾,最终输出结构为:
["5Y", {…}]["6M", {…}]["7Y", {…}]["10Y", {…}]["14D", {…}]["15Y", {…}]["20Y", {…}][">20Y", {…}]
注意:如果存在多个带
>的元素,它们之间的相对排序会沿用你同组内的原有规则,不会出现顺序混乱。
内容的提问来源于stack exchange,提问作者Rafał Waszak
相关产品推荐
相关产品推荐

