JavaScript:如何对包含NaN的数组进行排序 [英] JavaScript: How do you sort an array that includes NaN's

查看:72
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆