如何在JavaScript中按字母数字键unitId对JSON对象数组排序
按unitId属性排序JSON对象数组
要实现目标排序,核心是提取unitId中的数字部分进行数值比较,避免直接字符串排序导致的unit11排在unit2之后的问题。
实现代码
var array = [ { id: 10, unitId: 'unit17' }, { id: 11, unitId: 'unit19' }, { id: 13, unitId: 'unit27' }, { id: 12, unitId: 'unit2' }, { id: 13, unitId: 'unit11' }, { id: 14, unitId: 'unit1'} ]; // 执行排序 array.sort((a, b) => { // 提取unitId中的数字并转为整数 const numA = parseInt(a.unitId.slice(4), 10); const numB = parseInt(b.unitId.slice(4), 10); return numA - numB; });
排序后结果
var array = [ { id: 14, unitId: 'unit1' }, { id: 12, unitId: 'unit2' }, { id: 13, unitId: 'unit11' }, { id: 10, unitId: 'unit17' }, { id: 11, unitId: 'unit19'}, { id: 13, unitId: 'unit27' } ];
补充说明
- 用
slice(4)可以高效去除固定长度的unit前缀,也可以用replace('unit', '')实现相同效果 - 比较函数返回
numA - numB实现升序排序,若需要降序,改为numB - numA即可
内容的提问来源于stack exchange,提问作者Alok Saroj
相关产品推荐
相关产品推荐

