JS中sort()方法返回值?

作者站长头像
站长
· 阅读数 4

今天因为业务需要,使用了很久没有使用的函数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,那说明返回的是新数组,那‘对数组的引用’是什么意思?不是表示不返回新数组?

有没有大佬可以解释一下这句非人类语言要表达什么呢?

回复
1个回答
avatar
test
2024-07-08

“人话版本”:就是说 sort() 会修改原数组项的排序,sort() 结束后会返回一个数组结果,这个结果其实就是原数组。并不是说会返回一个新的数组给你。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容