Javascript 如何在JS的阵列上使用自定义排序?

Javascript 如何在JS的阵列上使用自定义排序?,javascript,arrays,sorting,Javascript,Arrays,Sorting,假设我有一个类似[2,5,1,11,10,45]的数组和一个num=99的变量。我想根据最接近的倍数对数组进行排序也应该是99的最小倍数,或者是可以用最小倍数除以的数字 如果我们看到上面的数组,我们可以看到99可以完全被11整除,其中商是9。除以我的10将得到除数为10。其他人也是如此。但是当我们除以99/45,我们的商是2 因为1总是99的倍数或99以外的任何数字。它应该在数组的末尾 简而言之,它应该基于最小商进行排序 所以排序的输出应该是[45,11,10,5,2,1]。试试这个:[2,5,

假设我有一个类似[2,5,1,11,10,45]的数组和一个num=99的变量。我想根据最接近的倍数对数组进行排序也应该是99的最小倍数,或者是可以用最小倍数除以的数字

如果我们看到上面的数组,我们可以看到99可以完全被11整除,其中商是9。除以我的10将得到除数为10。其他人也是如此。但是当我们除以99/45,我们的商是2

因为1总是99的倍数或99以外的任何数字。它应该在数组的末尾

简而言之,它应该基于最小商进行排序

所以排序的输出应该是[45,11,10,5,2,1]。

试试这个:[2,5,1,11,10,45]。排序,b=>99/b-99/a

但如果您的逻辑仅限于除法,则可以对数字进行排序:

[2,5,1,11,10,45].排序,b=>b-a


原因比n高,比除法的结果会小

这不总是和从最高到最低的数字排序一样吗?无论numvariable具有什么值?因为一个较小的数字总是比一个较大的数字更适合另一个数字。如果要包含负数,可以使用absx[2,5,1,11,10,45].sorta,b=>99/a-99/b@PatrickRoberts只需将逻辑还原为99/b-99即可/a@SajeebAhamed不,我的逻辑生成请求的输出。你是对的。这是我的错。a,b=>99/b-99/a产生[1,2,5,10,11,45],而不是[45,11,10,5,2,1],这是问题中要求的。是的,sry,你可以交换a和b来改变方向[2,5,1,11,10,45]。sorta,b=>99/a-99/b