Javascript 如何从中间开始对数组进行排序?

Javascript 如何从中间开始对数组进行排序?,javascript,arrays,sorting,pivot,Javascript,Arrays,Sorting,Pivot,考虑到,我有这样一个数组[…,n-2,n-1,n,n+1,n+2,…]。我想这样对它排序[n,n+1,n-1,n+2,n-2,…],其中n等于数组的中间 例如: 输入: 输出: 让arrayNotSorted=[0,1,2,3,4,5,6,7,8,9]; 设positionMiddleArray=Math.truncarrayNotSorted.length/2; 让arraySorted=[arrayNotSorted[positionMiddleArray]]; forlet i=1;i您

考虑到,我有这样一个数组[…,n-2,n-1,n,n+1,n+2,…]。我想这样对它排序[n,n+1,n-1,n+2,n-2,…],其中n等于数组的中间

例如:

输入:

输出:

让arrayNotSorted=[0,1,2,3,4,5,6,7,8,9]; 设positionMiddleArray=Math.truncarrayNotSorted.length/2; 让arraySorted=[arrayNotSorted[positionMiddleArray]];
forlet i=1;i您可以通过以下步骤执行此操作:

为结果创建空数组。 开始循环。将i初始化为长度的一半。 向后循环意味着每个循环将i减少1。 首先将当前索引处的元素推送到结果数组,将另一个对应值推送到数组。 函数sortFromMidarr{ 设res=[]; forlet i=Math.Ceilar.length/2;i>=0;i-{ 普沙尔案[i]; 资源推送[arr.length-i+1] } 返回res.filterx=>x!==未定义; } console.logsortFromMid[0,1,2,3,4,5,6,7,8,9]
[5,6,4,7,3,8,2,9,1,0]您可以通过以下步骤完成此操作:

为结果创建空数组。 开始循环。将i初始化为长度的一半。 向后循环意味着每个循环将i减少1。 首先将当前索引处的元素推送到结果数组,将另一个对应值推送到数组。 函数sortFromMidarr{ 设res=[]; forlet i=Math.Ceilar.length/2;i>=0;i-{ 普沙尔案[i]; 资源推送[arr.length-i+1] } 返回res.filterx=>x!==未定义; } console.logsortFromMid[0,1,2,3,4,5,6,7,8,9]
[5,6,4,7,3,8,2,9,1,0]您可以取一个轴值5,然后根据该值的绝对增量进行排序,轴值对相同的增量进行降序排序

变量数组=[0,1,2,3,4,5,6,7,8,9], 支点=5; array.sorta,b=>Math.absa-pivot-Math.absb-pivot | b-a;
console.log…数组;//5 6 4 7 3 8 2 9 1 0您可以取一个轴值5,然后根据该值的绝对增量和轴值进行排序,并对相同的增量进行降序排序

变量数组=[0,1,2,3,4,5,6,7,8,9], 支点=5; array.sorta,b=>Math.absa-pivot-Math.absb-pivot | b-a;
console.log…数组;//5 6 4 7 3 8 2 9 1 0如果您希望改进现有的工作代码,请转到。作为旁注,如何获得元素数为偶数的数组的中间位置?@YannickK好的,我下次再做。为了回答你的问题,在循环中,我检查元素是否存在,假设我有n-1和n+1,我得到列表的所有数字哦,是的,我理解你是如何得到中间元素的,我的意思是,从技术上讲,在偶数数组中没有中间元素。在这种情况下,中间指数将是4.5,这当然是不可能的。也许这对您的目的并不重要,我只是想知道您是否有其他意思。如果您希望改进现有的工作代码,请转到。作为旁注,如何获得元素数为偶数的数组的中间位置?@YannickK好的,我下次再做。为了回答你的问题,在循环中,我检查元素是否存在,假设我有n-1和n+1,我得到列表的所有数字哦,是的,我理解你是如何得到中间元素的,我的意思是,从技术上讲,在偶数数组中没有中间元素。在这种情况下,中间指数将是4.5,这当然是不可能的。也许这与你的目的无关,我只是想知道你是否有别的意思。
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[5, 6, 4, 7, 3, 8, 2, 9, 1, 0]