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
Jquery 按字母顺序对数组元素进行数字排序_Jquery_Arrays_Sorting - Fatal编程技术网

Jquery 按字母顺序对数组元素进行数字排序

Jquery 按字母顺序对数组元素进行数字排序,jquery,arrays,sorting,Jquery,Arrays,Sorting,假设我有一个数组: arr = ["Tom, 2, 6","Bill, 3, 8","Lisa, 4, 7","Charles, 2, 8"] 我知道我可以使用arr.split(',',2.pop(),用于提取每个字符串中的第二个元素,并使用自定义比较函数对其进行排序。但是,在按数字排序后,我如何按字母顺序排序 例如,在本例中,包含Tom和Charles的字符串在第一个逗号后都有一个2。按数字排序会使汤姆排在查尔斯前面,但我希望他们也能按字母顺序排列。那我该怎么做呢?你为什么不试试排序呢 a

假设我有一个数组:

arr = ["Tom, 2, 6","Bill, 3, 8","Lisa, 4, 7","Charles, 2, 8"]
我知道我可以使用
arr.split(',',2.pop(),用于提取每个字符串中的第二个元素,并使用自定义比较函数对其进行排序。但是,在按数字排序后,我如何按字母顺序排序


例如,在本例中,包含Tom和Charles的字符串在第一个逗号后都有一个2。按数字排序会使汤姆排在查尔斯前面,但我希望他们也能按字母顺序排列。那我该怎么做呢?

你为什么不试试排序呢

arr.sort();

您可以在
sort()中传递自定义回调函数

var arr=[“汤姆,2,6”,“比尔,3,8”,“丽莎,4,7”,“查尔斯,2,8”];
arr.sort((a,b)=>{
a=a.split(',').map(o=>o.trim());//分割a和trim
b=b.split(',').map(o=>o.trim());//分割b和trim
if(a[1]!==b[1])返回a[1]-b[1];//检查第二个值是否不同,如果不同,则使用第二个值进行排序
返回a[0].localeCompare(b[0]);//由于第二个值相同,请使用第一个值进行排序
})

控制台日志(arr)谢谢您的解决方案。很好!在我的问题中,我可能应该这样说,但我数组中的名称包括姓氏。我尝试使用
return(a[0].split(“,2.pop()).localeCompare(b[0].split(“,2.pop())
按姓氏排序,但其效果与您的答案相同。有什么建议吗?@code爱好者你能给出一个姓氏数组的例子吗?所以按姓氏排序?
var arr=[“汤姆·彼得斯,2,6”,“比尔·伯吉斯,3,8”,“丽莎·库珀,4,7”,“查尔斯·怀特,2,8”]
-按第二个元素编号排序后的结果是,汤姆·彼得斯凭借姓氏领先查尔斯·怀特。@code爱好者我们假设
第二个
单词是姓氏。正当用户可能有一个名字“约翰·保罗·彼得斯”。或者只使用
最后一个
单词?是的。第二个单词假定为姓氏。