okok地
okok地
  • 发布:2020-03-04 22:08
  • 更新:2020-03-06 22:39
  • 阅读:843

JS数组方法sort在node环境与浏览器环境下的差异

分类:uni-app

详细问题描述

数组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]

2020-03-04 22:08 负责人:无 分享
已邀请:
DCloud_UNI_FXY

DCloud_UNI_FXY

你自己代码写的有问题吧。
为什么sort函数只有一个if(a>b)的判断返回了1,其他情况不就返回undefined了吗?那不就没法比较了么。
返回值应该是大于0,小于0,等于0三个数值其中的一个。比如1,-1,0

var numbers = [4, 2, 5, 1, 3];  
numbers.sort((a, b) => a-b);  
console.log(numbers);
DCloud_heavensoft

DCloud_heavensoft

h5的js环境是浏览器控制的,不是uni-app控制的。

  • okok地 (作者)

    是的,现在搞清楚是浏览器与node环境下的差异

    2020-03-06 22:45

该问题目前已经被锁定, 无法添加新回复