JavaScript中如何按city字段对车站对象数组排序?
按
city字段对车站数组分组排序 要让同一城市的车站相邻排列,直接用JavaScript数组的sort()方法就能实现,针对1000+条数据的场景也完全够用。
核心实现代码
先拷贝原数组避免修改原数据,再通过city字段完成排序:
const arr = [ { name: "Prague - train station", value: 1041041, city: "Prague" }, { name: "Brno - bus station", value: 104411041, city: "Brno" }, { name: "Prague - bus station", value: 104411041, city: "Prague" }, { name: "Brno - train station", value: 44411041, city: "Brno" } ]; // 拷贝数组后排序,避免修改原数组 const sortedArr = [...arr].sort((a, b) => a.city.localeCompare(b.city));
代码细节说明
[...arr]:用扩展运算符创建原数组的浅拷贝,防止排序操作影响原数据(如果不需要保留原数组,直接执行arr.sort(...)即可)localeCompare():相比直接用字符串比较符(</>),它能更好地处理带特殊字符的城市名(比如含重音的欧洲城市),按语言环境规则排序,结果更精准- 性能:浏览器内置的
sort方法采用高效排序算法(如V8引擎的Timsort),时间复杂度为O(n log n),处理1000+条数据毫无压力
排序后结果
const sortedArr = [ { name: "Prague - train station", value: 1041041, city: "Prague" }, { name: "Prague - bus station", value: 104411041, city: "Prague" }, { name: "Brno - bus station", value: 104411041, city: "Brno" }, { name: "Brno - train station", value: 44411041, city: "Brno" } ];
内容的提问来源于stack exchange,提问作者Daniel Bílek
相关产品推荐
相关产品推荐

