JavaScript错误的顺序sorting
我遇到了一个javascript(node.js)sorting函数没有按照正确的顺序sorting的问题。 我需要它通过负数和正数进行sorting,并首先返回最小的非负数。 这就是我现在使用的:
.sort(function(a, b){if(a >= 0){return a - b;}else{return 1;}});
但是,如果只有一个正数,并且在最后经常发生的情况下,则该数字按倒数第二sorting。 我可以通过更好的方式来实现这一点吗?
这里有一个使用三元运算符的方法:
alert([8,5,-1,-8,-2,7,1,10,1,7,-3].sort(function(a,b) { return a*b < 0 ? b : ab; }));
这个sortingfunction的工作原理是因为它只对数字进行sorting,如果a
位于0的同一边,就像b
:
function SortNonNegativesFirst(a,b){ if((a>=0) == (b>=0)) // Checks if both numbers are on the same side of zero return ab; return a<b; // One is negative, one is positive, so return whether a is negative } console.log([1,6,8,4,-3,5,-2,3].sort(SortNonNegativesFirst)); //[1, 3, 4, 5, 6, 8, -3, -2]
- 在电子应用程序中保护内容(大数据)
- 如何访问一个Sql litevariables从一个Js到Cordova中的另一个Js
- Socket.io否请求的资源上存在“Access-Control-Allow-Origin”标题。 Origin'http:// localhost'因此不被允许访问
- 将sql对象转换为node.js中有效的Jsonstring – Azure
- 使用Multer重命名上传的文件不起作用(Express.js)
- 正则expression式在文本文件中匹配文件名
- 如何用browserify和gulp输出多个包
- 如何在使用HtmlWebpackPlugin的正文代码之前注入bundle source?
- 如何禁用moment.js日光时区转换