Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.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 - Fatal编程技术网

Javascript 使用两种不同条件对数组排序

Javascript 使用两种不同条件对数组排序,javascript,Javascript,我试图解决一个需要对数组排序的练习。我必须以一种特殊的方式对它进行排序:从最大的数字到最小的数字,从最低的数字到最高的数字 示例:如果给定数组为 [1, 6, 12, 66, 66, 66, 44, 44, 44, 34, 34, 4, 4, 4, 5, 5, 5, 5, 122, 122, 122, 122] 结果应该是: [12, 6, 1, 34, 34, 66, 66, 66, 44, 44, 44, 4, 4, 4, 122, 122, 122, 122, 5, 5, 5, 5]

我试图解决一个需要对数组排序的练习。我必须以一种特殊的方式对它进行排序:从最大的数字到最小的数字,从最低的数字到最高的数字

示例:如果给定数组为

[1, 6, 12, 66, 66, 66, 44, 44, 44, 34, 34, 4, 4, 4, 5, 5, 5, 5, 122, 122, 122, 122]
结果应该是:

[12, 6, 1, 34, 34, 66, 66, 66, 44, 44, 44, 4, 4, 4, 122, 122, 122, 122, 5, 5, 5, 5]
我的想法是测量数组中相同元素的长度,然后从最低到最高排序,然后从最大到最小排序。我甚至无法将这些元素相互比较,更不用说它们的长度了。元素之间的比较如此困难是正常的吗?这只是数百种不同的比较尝试之一

功能排序(arr){
让结果=[];
for(设i=0;i对于(让j=arr.length-1;j我认为您需要将数组转换为一个对象数组,这样您就可以保留原始值和出现计数。然后您可以在两个键上对其进行排序,之后只去掉值:

const数组=[1,6,12,66,66,66,44,44,34,4,4,5,5,5,122,122,122,122];
功能排序(arr){
设oarr=array.reduce((acum,v)=>(acum[v]=acum[v]?acum[v]+1:1,acum),{});
让combined=array.map(v=>({value:v,count:oarr[v]}));
返回组合的.sort((a,b)=>a.count-b.count | | b.value-a.value).map(o=>o.value);
}

console.log(sortIt(array));
我认为您需要将数组转换为一个对象数组,这样您就可以保留原始值和出现计数。然后您可以在两个键上对其进行排序,之后只去掉值:

const数组=[1,6,12,66,66,66,44,44,34,4,4,5,5,5,122,122,122,122];
功能排序(arr){
设oarr=array.reduce((acum,v)=>(acum[v]=acum[v]?acum[v]+1:1,acum),{});
让combined=array.map(v=>({value:v,count:oarr[v]}));
返回组合的.sort((a,b)=>a.count-b.count | | b.value-a.value).map(o=>o.value);
}

console.log(sortIt(array));
您能用适当的例子进一步解释一下您的问题吗?12是第一个数字吗?根据您的预期结果,排序标准是向后陈述的。主要排序键似乎是值频率(“数字数”).你能用适当的例子再解释一下你的问题吗?12是第一个数字吗?根据你的预期结果,排序标准是向后的。主要排序键似乎是值频率(“数字的数量”)。谢谢你的解决方案。我现在会花一些时间来研究你是如何做到的。看着它我会有点头疼。谢谢你的额外解释,但是还有很多其他的东西我没有在解决方案中得到。比如,所有的东西。我是js的一个非常初学者,仍然在学习方法,并试图了解h的逻辑如何与程序对话。我对reduce方法有一个大致的概念,但箭头函数之后是什么,我无法阅读。我也无法阅读后面的内容。我理解你是如何做到这一点的,但代码对我来说很难理解。如果你真的刚刚开始,这个练习可能太复杂了没有不管你如何处理这个问题。排序本身是复杂的。JavaScript有相当丰富的工具集合(特别是现在的2020年)可用于各种常见任务,但出于这个原因,需要很长时间才能熟悉。谢谢你的解决方案。我现在会花一些时间来研究你是如何做到的。仅仅看一下就有点让我心烦意乱。谢谢你的额外解释,但还有很多其他东西我在解决方案中没有得到。比如,我所有的东西ng.我是一名js初学者,仍在学习各种方法,并试图了解如何与程序对话的逻辑。我对reduce方法的作用有一个大致的了解,但在箭头函数之后是什么,我无法阅读。我也无法阅读后面的内容。我理解你是如何做到这一点的,但代码很难解开我的意思是。如果你真的刚刚开始,不管你如何处理这个问题,这个练习可能太复杂了。排序本身很复杂。JavaScript有相当丰富的工具集合(特别是现在的2020年)可用于各种常见任务,但出于这个原因,需要很长时间才能熟悉。