)?-6ren"> )?-Ruby 有一个叫做组合比较或“宇宙飞船”运算符的东西,它看起来像这样: 它执行以下操作: a b := if a b then return 1 Credit Javascript 中-6ren">
gpt4 book ai didi

javascript - Javascript 中的组合比较/"Spaceship"运算符 (<=>)?

转载 作者:可可西里 更新时间:2023-11-01 01:30:40 30 4
gpt4 key购买 nike

Ruby 有一个叫做组合比较或“宇宙飞船”运算符的东西,它看起来像这样:<=>

它执行以下操作:

a <=> b :=
if a < b then return -1
if a = b then return 0
if a > b then return 1

Credit

Javascript 中有类似的运算符吗?如果不是,我怎样才能得到相同的结果?


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

它也不适用于 Internet Explorer、Safari 或所有移动浏览器(参见 MDN)


@duques_l 找到一个函数 here .效果很好,可以在JSFiddle上测试

唯一的问题是如果字符串不可比较函数返回-1而不是 nil

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

function spaceship(val1, val2) {
if ((val1 === null || val2 === null) || (typeof val1 != typeof val2)) {
return null;
}
if (typeof val1 === 'string') {
return (val1).localeCompare(val2);
}
else {
if (val1 > val2) { return 1 }
else if (val1 < val2) { return -1 }
return 0;
}
}

最佳答案

据我所知,JavaScript 中没有这样的运算符,但您可以使用 Math.sign()功能:

Math.sign(a - b);

注意:如评论中所述,Math.sign() 目前并非所有浏览器都支持。检查兼容性 ( MDN )。

关于javascript - Javascript 中的组合比较/"Spaceship"运算符 (<=>)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34852855/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com