详细问题描述
数组sort方法异常
重现步骤
[步骤]
var numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => {
if(a>b) return 1;
});
console.log(numbers);
[结果] [4, 2, 5, 1, 3]
[期望] [ 1, 2, 3, 4, 5 ]
简要说明
[1, 2, 3, 4, 5].sort((a, b) => {
console.log(a,b);
});
由以上打印结果发现参数顺序与node环境下的参数顺序相反
则作出如下hack式更改才可达到期望效果
numbers.sort((b, a) => {
if(a>b) return -1;
});
console.log(numbers);
IDE运行环境说明
HBuilderX 2.5.1
uni-app运行环境说明
运行端H5
联系方式
[QQ]
2 个回复
DCloud_UNI_FXY
你自己代码写的有问题吧。
为什么sort函数只有一个if(a>b)的判断返回了1,其他情况不就返回undefined了吗?那不就没法比较了么。
返回值应该是大于0,小于0,等于0三个数值其中的一个。比如1,-1,0
DCloud_heavensoft
h5的js环境是浏览器控制的,不是uni-app控制的。
okok地 (作者)
是的,现在搞清楚是浏览器与node环境下的差异
2020-03-06 22:45