function sortByKey(key,desc) {
return function(a,b){
return desc ? ~~(a[key] < b[key]) : ~~(a[key] > b[key]);
}
}
请大手帮我解释下核心代码是什么意思?~~(a[key] < b[key])这句的波浪线是什么意思?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
a[key] < b[key]和a[key] > b[key]返回的是布尔型值,true或false,把它们强制转换为整数,得到的是1或者0。但是 sort 函数需要返回值是大于、等于或者小于 0 的整数用来排序。比如
a[key] > b[key],返回正整数,a[key] < b[key]返回负整数。所以,这个排序函数并不会真正的排序。按你的意思,真正需要的是
中间那部分还可以简化一下(代码简化了,但不是那么好理解)
关于排序,可以参考Array.prototype.sort() 的 compareFunction 部分,注意对 compareFunction 返回结果的说明
双波浪线"
~~"等价于Math.floor取整,"~~"的效率较高可读性较差,"Math.floor"效率较高可读性较低。其实习惯就好。如:
具体这个方法是否能够满足其他调用需求,这个就不是很清楚了,不过方法中的
desc具体表示什么意思,确实可以讨论一下:假如要排序的内容如下:
用冒泡排序把上面的数组从小到大排序。
比较大小有几种情况:大于,小于,等于,如果我问你
12>23吗?你告诉我不大于,那么我就可以知道12可能等于23或者是12小于23,由于我们是按从小到大的顺序排序的,所以我就不需要进行任何操作。同理,我问你
23>5吗?你告诉我大于,那么现在最高位已经是23,已经是最大的值了。
采纳的答案回答得很好,不过说这个是不能排序的恐怕是有欠妥当的。
强制转化为整数