今天因为业务需要,使用了很久没有使用的函数sort()
其实使用很简单,但是今天不小心发现一句官方的解释,原话是:“返回值:对数组的引用。请注意,数组在原数组上进行排序,不生成副本。”
这句话就有点没搞懂到底是什么意思了
对数组的引用是什么鬼
比如:
var list= [
{name:"小妹",datetime: "2021-07-09"},
{name:"小妹",datetime: "2021-03-09"},
{name:"小妹",datetime: "2021-09-09"}
]
list.sort(function(a, b) {
return a.datetime - b.datetime ? 1 : -1
});
我可以:(情况一)
let newArr = list.sort(function(a, b) {
return new Date(a.datetime).getTime() - new
Date(b.datetime).getTime()
});
console.log(newArr)
也可以:(情况2)
list.sort(function(a, b) {
return new Date(a.datetime).getTime() - new
Date(b.datetime).getTime()
});
console.log(list)
两个都可以
矛盾就在这,如果是情况1,那说明返回的是新数组,那‘对数组的引用’是什么意思?不是表示不返回新数组?
有没有大佬可以解释一下这句非人类语言要表达什么呢?
“人话版本”:就是说
sort()
会修改原数组项的排序,sort()
结束后会返回一个数组结果,这个结果其实就是原数组。并不是说会返回一个新的数组给你。