Javascript-处理";";排序数组时

Javascript-处理";";排序数组时,javascript,arrays,sorting,Javascript,Arrays,Sorting,我问这个问题是为了检查自己的质量,看看更有经验的Javascript程序员是否有更好的方法 我有一系列的标题,其中一些以“The”开头。我不想在对标题进行排序时考虑“The”。我计划的方法是使用正则表达式从值的开头剪切“The”,然后在排序数组之前将其拼接到值的结尾。例如,将“合适的材料”修改为“合适的材料,合适的材料” 我的问题:有没有比遍历数组并修改正则表达式更好/更有效的方法 编辑:感谢所有花时间回复的人(并对延迟表示抱歉)。我使用了这两种方法(正则表达式剪切和拼接以及比较)。我最终选择了

我问这个问题是为了检查自己的质量,看看更有经验的Javascript程序员是否有更好的方法

我有一系列的标题,其中一些以“The”开头。我不想在对标题进行排序时考虑“The”。我计划的方法是使用正则表达式从值的开头剪切“The”,然后在排序数组之前将其拼接到值的结尾。例如,将“合适的材料”修改为“合适的材料,合适的材料”

我的问题:有没有比遍历数组并修改正则表达式更好/更有效的方法


编辑:感谢所有花时间回复的人(并对延迟表示抱歉)。我使用了这两种方法(正则表达式剪切和拼接以及比较)。我最终选择了最适合我的脚本流程的比较路径。

您可以编写一个自定义比较函数,将其传递给排序算法,该算法在比较开头有“the”的字符串和没有“the”的字符串时返回一个适当的值。在所有其他情况下,它可以使用自然排序。一旦有了这样一个函数,就可以按自己喜欢的方式对字符串进行排序。

您可以编写一个自定义比较函数,将其传递给排序算法,该算法在比较开头有“the”的字符串和开头没有“the”的字符串时,会返回一个适当的值。在所有其他情况下,它可以使用自然排序。一旦有了这样一个函数,就可以按自己喜欢的方式对字符串进行排序。

我想您只是在使用
sort()
而不使用任何参数

如果您查看了文档:

您会注意到,您实际上可以放入一个自定义函数,在该函数中,如果前3个字符是“the”(考虑大写字母),则可以跳过它们


您的方法也是有效的,只要您在以后正确地输出标题时做相反的事情。就性能而言,我没有进行过测试,但除非您使用的是大型阵列,否则它不应该是人类注意到的,所以请继续使用您认为稍后更好理解/其他人可以理解的内容。

我猜您只是在使用
sort()
而没有任何参数

如果您查看了文档:

您会注意到,您实际上可以放入一个自定义函数,在该函数中,如果前3个字符是“the”(考虑大写字母),则可以跳过它们


您的方法也是有效的,只要您在以后正确地输出标题时做相反的事情。就性能而言,我没有进行过测试,但除非您使用的是大型阵列,否则它不应该是人类注意到的,因此请继续进行您认为稍后更好理解/其他人可以理解的操作。

使用array.join并替换“the”使用空字符,然后将其拆分为数组并对其排序您真的关心这里的效率吗?或者你是在寻找一种干净整洁的方法吗?使用array.join并用空字符替换“the”,然后将其拆分为数组并进行排序你真的关心这里的效率吗?还是你在寻找一种干净整洁的方法?顺便说一句。问题是关于一种更有效的方法,而你的方法肯定不是。在发表评论之前,你测量过它实际需要多长时间吗?@Hrishi排序过程中,排序函数被应用了~N*log(N)次,它必须排除两个操作数的“the”,因此这样做至少会浪费2*log(N)在排除“The”的过程中,时间增加了两倍。这是优化应用程序的最佳位置吗?不知道,但OP确实要求一个更有效的方法。是的。但他也要求一个更好的方法。我认为,传入一个自定义排序函数,如果他在其他地方需要它,他可以潜在地重复使用它,这是一种比处理数组元素、使用regexp切分、构造原始字符串以及所有黑客行为更为干净的排序方法。顺便说一句。问题是关于一种更有效的方法,而你的方法肯定不是。在发表评论之前,你测量过它实际需要多长时间吗?@Hrishi排序过程中,排序函数被应用了~N*log(N)次,它必须排除两个操作数的“the”,因此这样做至少会浪费2*log(N)在排除“The”的过程中,时间增加了两倍。这是优化应用程序的最佳位置吗?不知道,但OP确实要求一个更有效的方法。是的。但他也要求一个更好的方法。我认为,传入一个自定义排序函数,如果他在其他地方需要它,他可以潜在地重复使用它,这是一种比处理数组元素、使用regexp切分、构造原始字符串以及所有黑客行为更为干净的排序方法。