JavaScript如何根据Technology属性值按指定规则排序数组对象
实现方案
你可以通过自定义优先级映射表结合数组sort方法实现需求,实现逻辑简单易维护:
// 定义排序优先级,数值越小排位越靠前 const sortPriority = { 'SharePoint': 1, 'Sql Server': 2, 'JAVA': 3 } // 执行排序 const sortedArray = dataArray.sort((itemA, itemB) => { return sortPriority[itemA.Technology] - sortPriority[itemB.Technology] })
补充说明
- 同优先级的元素会保留原数组中的相对顺序,符合稳定排序要求
- 如果后续需要调整排序规则、新增其他Technology类型的排序顺位,只需要修改
sortPriority映射表即可,不需要改动排序逻辑 - 如果存在Technology值不在规则内的场景,可以给这类元素设置默认优先级,比如让所有未定义规则的元素排在最后,代码可调整为:
const sortedArray = dataArray.sort((itemA, itemB) => { const priorityA = sortPriority[itemA.Technology] ?? 999 const priorityB = sortPriority[itemB.Technology] ?? 999 return priorityA - priorityB })
内容的提问来源于stack exchange,提问作者Malinthaz1991
相关产品推荐
相关产品推荐

