Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中,如何先按姓氏,然后按名字和中间名对名称数组进行排序_Javascript_Arrays_Sorting - Fatal编程技术网

在Javascript中,如何先按姓氏,然后按名字和中间名对名称数组进行排序

在Javascript中,如何先按姓氏,然后按名字和中间名对名称数组进行排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,我有一组名字,我想先按姓排序,然后按名排序,最后按中间名排序。中间名可以超过1。例如,如果我有一个名称为的数组: ["James Morrison", "Billy Z Joel", "Billy Joel", "Billy A Joel"] 我如何将其分类为: ["Billy Joel", "Billy A Joel", "Billy Z Joel", "James Morrison"] 一种解决方案是使用正则表达式将姓氏与内的其他名称分开。然后,您可以使用来首先比较姓氏,如果它们相等,则

我有一组名字,我想先按
排序,然后按
排序,最后按
中间名
排序。
中间名
可以超过
1
。例如,如果我有一个名称为的数组:

["James Morrison", "Billy Z Joel", "Billy Joel", "Billy A Joel"]
我如何将其分类为:

["Billy Joel", "Billy A Joel", "Billy Z Joel", "James Morrison"]
一种解决方案是使用正则表达式将
姓氏
内的其他名称
分开。然后,您可以使用来首先比较
姓氏
,如果它们相等,则比较
其他姓名
。注意,在这种方法中,数组中的每个元素至少需要一个
名字
和一个
姓氏
,否则它将不起作用。此外,该方法仅用于不变异(更改)原始数组的目的,但如果您不介意的话,可以放弃它

const name=[“詹姆斯·莫里森”、“比利·Z·乔”、“比利·乔”、“比利·A·乔”、“詹姆斯·小约瑟夫·莫里森”];
设res=names.slice().sort((a,b)=>
{
让[aNames,aSurname]=a.match((/(.*)s(\w+$/).slice(1);
让[bNames,bSurname]=b.match((/(.*)\s(\w+$/).slice(1);
if(aSurname.localeCompare(bSurname))
返回aSurname.localeCompare(bSurname);
其他的
返回aNames.localeCompare(bNames);
});
控制台日志(res)
.as控制台{背景色:黑色!重要;颜色:石灰;}
.作为控制台包装器{max height:100%!important;top:0;}
一种解决方案是使用正则表达式将
姓氏
内部的其他名称
中分离出来。然后,您可以使用来首先比较
姓氏
,如果它们相等,则比较
其他姓名
。注意,在这种方法中,数组中的每个元素至少需要一个
名字
和一个
姓氏
,否则它将不起作用。此外,该方法仅用于不变异(更改)原始数组的目的,但如果您不介意的话,可以放弃它

const name=[“詹姆斯·莫里森”、“比利·Z·乔”、“比利·乔”、“比利·A·乔”、“詹姆斯·小约瑟夫·莫里森”];
设res=names.slice().sort((a,b)=>
{
让[aNames,aSurname]=a.match((/(.*)s(\w+$/).slice(1);
让[bNames,bSurname]=b.match((/(.*)\s(\w+$/).slice(1);
if(aSurname.localeCompare(bSurname))
返回aSurname.localeCompare(bSurname);
其他的
返回aNames.localeCompare(bNames);
});
控制台日志(res)
.as控制台{背景色:黑色!重要;颜色:石灰;}

.作为控制台包装器{max height:100%!important;top:0;}
您是否尝试过任何方法来找到解决方案?在Javascript中,有一个名为
sort()
的数组方法用于按正确顺序对数组项进行排序。在这个链接上查看:您是否尝试过任何方法来找到解决方案?在Javascript中,有一个名为
sort()
的数组方法,用于按正确的顺序对数组项进行排序。请通过此链接查看: