相关疑难解决方法(0)

Javascript中的组合比较/"太空飞船"操作员(<=>)?

Ruby有一个称为组合比较或"太空飞船"运算符的东西,它看起来像这样: <=>

它执行以下操作:

a <=> b :=
    if a < b then return -1
    if a = b then return  0
    if a > b then return  1
Run Code Online (Sandbox Code Playgroud)

信用

Javascript中是否有类似的运算符?如果没有,我怎么能得到相同的结果?


@ madox2建议使用Math.sign(a - b),它适用于数字,但不适用于数组(比较你需要使用的数组array.length).

它在Internet Explorer,Safari或所有移动浏览器中也不起作用(请参阅MDN)


@duques_l这里找到了一个函数.它工作得很好,你可以在JSFiddle上测试它

唯一的问题是如果字符串不具有可比性,则函数返回-1而不是nil

更新:@duques_l稍微改变了函数,现在它工作正常(我想是的,无论如何,这里是JSFiddle):

function spaceship(val1, val2) {
    if ((val1 === null || val2 === null) || (typeof val1 != typeof val2)) {
        return null;
    } …
Run Code Online (Sandbox Code Playgroud)

javascript ruby operators comparison-operators spaceship-operator

18
推荐指数
2
解决办法
7041
查看次数