箭头函数的返回值

这几天使用node.js编写后端代码,用到了sort函数,这个函数用来给数组排序,原数组会根据排序结果重新组合。比如下面的代码:

1
2
3
4
var arr=[2,1,3,4]

arr.sort((a,b)=>a-b)
console.log(arr)

sort的参数是一个函数,这个函数返回一个数值,根据返回的数值,对前后顺序进行排列。对于数字来说,使用减法就可以满足这个要求,当然也可以使用判断,如果a>b,返回1,a小于b返回-1,a等于b返回0。

如果需要给对象排序,可以使用对象中的某个数字字段,比如:

1
2
3
4
5
6
7
8
9
10
11
var arr[
{
name:"张三",
age:15
},
{
name:"李四",
age:13
},
]
arr.sort((a,b)=>a.age-b.age)

sort会返回一个指针,这个指针指向原数组,并不生成新的数组。所以是否使用返回值不重要。

在写程序时,犯了一个错误:

1
2
3
4
//正确
(a,b)=>a-b
//错误
(a,b)=>{a-b}

加上大括号后,函数实际上没有返回值,需要这样修改:

1
(a,b)=>{return a-b}

庆幸的是及时进行了测试,将这个隐患消除了。