如何按用户姓氏对包含用户与课程的JavaScript数组排序?
按用户姓氏排序数组的解决方案
你的代码目前是按完整用户名排序,要改成按姓氏排序,核心是从user字段里提取出姓氏,再基于姓氏做比较。这里假设姓名格式是「名 姓」(包含中间名的话,最后一段是姓氏),可以用split(' ')拆分姓名,再用pop()取最后一段作为姓氏。
修改后的代码如下:
const userarray = [ { course: "Math", user: "Steve Lewis" }, { course: "English", user: "James Rollo" }, { course: "IT", user: "Suzanne Collins" } ] userarray.sort(function(a, b) { // 提取姓氏并转为小写 const lastNameA = a.user.split(' ').pop().toLowerCase(); const lastNameB = b.user.split(' ').pop().toLowerCase(); // 按姓氏排序 return lastNameA.localeCompare(lastNameB); }); console.log(userarray);
运行后会得到按姓氏Collins、Lewis、Rollo排序的结果,符合需求。如果遇到更复杂的姓名格式(比如带前缀、后缀),可以根据实际情况调整姓氏提取的逻辑,但当前场景下这个方法足够好用。
内容的提问来源于stack exchange,提问作者LuxyGillan
相关产品推荐
相关产品推荐

