.sort函数是否会更改原始数组? [英] Does .sort function change original array?

查看:2735
本文介绍了.sort函数是否会更改原始数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有那段代码:

arr = arr.sort(function (a, b) {
    return a.time>b.time
})

我是否需要重新定义arr或者它可以只调用sort函数吗?
是这样的:

Do I need to redefine arr or it is possible just to call sort function? like this:

arr.sort(function (a, b) {
    return a.time>b.time
})

排序和过滤函数会改变原始数组吗?

Will the sort and filter functions change the original array?

推荐答案

使用 slice()副本进行排序原始数组。

var arr =[{time:4},{time:3},{time:6}];

arr.sort(function (a, b) {
  return a.time-b.time;
});

将改变原始数组并返回

will mutate the original array and returns :


[{time:3},{time:4},{time:6}]

[ { time: 3 }, { time: 4 }, { time: 6 } ]

和console.log(arr)返回

and console.log(arr) returns


[{time:3},{time:4},{time :6}]

[ { time: 3 }, { time: 4 }, { time: 6 } ]

但是

var arr =[{time:4},{time:3},{time:6}];
arr.slice().sort(function (a, b) {
  return a.time-b.time;
});

返回


[{time:3},{time:4},{time:6}]

[ { time: 3 }, { time: 4 }, { time: 6 } ]

但不会影响原作数组。

console.log(arr)返回

console.log(arr) returns


[{时间: 4},{时间:3},{时间:6}]

[ { time: 4 }, { time: 3 }, { time: 6 } ]

这篇关于.sort函数是否会更改原始数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆