JavaScript:如何对包含NaN的数组进行排序 [英] JavaScript: How do you sort an array that includes NaN's
本文介绍了JavaScript:如何对包含NaN的数组进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试对有时具有 Infinity
或 NaN
的数组进行排序.当我使用标准的JavaScript array.sort()
时,似乎会进行排序,直到达到 NaN
,然后我得到随机结果.
var数组= [.02,.2,-.2,Nan,Infinity,20];
有没有办法对此进行排序,以使最终结果从负数到正数,并且最后仍具有 NaN
或 Infinity
.
-.2,.02,.2,20,NaN,Infinity
解决方案
在这种情况下,您可以使用JavaScript的内置实用程序功能捕获 NaN
和 Infinity
:>
let array = [Infinity,-1,6,1,1,0,NaN,0,-1,2,5,10,-无限,NaN,无限,NaN]//以随机顺序将-Infinity,NaN,Infinity排序到末尾array.sort(function(a,b){if(isFinite(a-b)){返回a-b;} 别的 {返回isFinite(a)吗?-1:1;}});//[-1,-1,0,0,1,2,5,6,10,NaN,Infinity,Infinity,NaN,-Infinity,NaN]console.log(array);//sort -Infinity< 0< Infinity< NaNarray.sort(function(a,b){if(isNaN(a)){返回1-isNaN(b);} 别的 {返回a-b;}});//[-Infinity,-1,-1,0,0,1,2,5,6,10,Infinity,Infinity,NaN,NaN,NaN]console.log(array);
I'm trying to sort an array that sometimes has Infinity
or NaN
. When I use a standard JavaScript array.sort()
it seems to sort until it reaches a NaN
and then I get random results after that.
var array =[.02,.2,-.2,Nan,Infinity,20];
Is there a way to still sort this so that the end result is from negative to positive and still have NaN
or Infinity
at the end.
-.2,.02,.2,20,NaN,Infinity
解决方案
You can catch NaN
and Infinity
using JavaScript's built-in utility functions for those cases:
let array = [Infinity, -1, 6, 1, 0, NaN, 0, -1, 2, 5, 10, -Infinity, NaN, Infinity, NaN]
//sort -Infinity, NaN, Infinity to the end in random order
array.sort(function(a,b){
if(isFinite(a-b)) {
return a-b;
} else {
return isFinite(a) ? -1 : 1;
}
});
//[-1,-1,0,0,1,2,5,6,10,NaN,Infinity,Infinity,NaN,-Infinity,NaN]
console.log(array);
//sort -Infinity<0<Infinity<NaN
array.sort(function(a,b){
if(isNaN(a)) {
return 1-isNaN(b);
} else {
return a-b;
}
});
//[-Infinity,-1,-1,0,0,1,2,5,6,10,Infinity,Infinity,NaN,NaN,NaN]
console.log(array);
这篇关于JavaScript:如何对包含NaN的数组进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文